Spring原理总结
写在前面:技术常新,思想常存。
Spring全家桶过于庞大,学习时难以抓住重点,希望通过此文章,让大家更好地去学习这一框架技术。
Spring有两大内功:IoC容器和AOP。这两个东西是不管什么时候都不会改变的。即便今天有了Spring Boot,也是需要了解的。
这个图是今天的软件项目基本都会基于的模式。即MVC。最左边的用户,最终是要获取/修改最右边的数据库里的数据。中间不管通过什么语言或什么方式,基本都可以分为三层,表示层如果不是jsp换成app都没有什么问题,业务逻辑层称为business/service都可以,模型层负责和数据库进行交互,提供数据给业务逻辑。
Spring IoC干了什么工作?它提供了一个容器,这个容器其实就是一个工厂,帮我们生产对象的,也就是上述三层各有什么对象,统一放到容器里边管理。这样做的好处是:解开层与层,对象和对象之间的耦合。让开发表示层的人不用了解业务逻辑,开发业务逻辑层的人,不用了解模型层。这其实就是软件开发架构里最核心的概念。通过这样的方式来提高整个软件的可维护和可复用性。(Linux系统课会讲到怎么使得软件高可用和高可靠)总之,纵向被切割开来了。可根据实际情况切割得更细。在实际公司里边就可以分成表示层组,业务逻辑组,模型组。他们相互间不需要什么协作,基本以文档或接口就能开工。
AOP干什么呢?AOP是横向地去切,比如说当表示层和业务逻辑层都要做日志时,就形成一个切面。切割地越细,可复用性和可维护性就越高。某一小块有问题,更改这一小块就行了。
我们在学框架时,真正需要理解和学会的是图里面的概念。技术层面常常会发生改变。
十年前学Spring,大部分是基于XML配置,学了将近半个月去了解各种配置怎么写,才能使软件跑起来。但很快,注解就开始流行起来,再过一两年,基本不用XML了。紧接着就出现了Spring Boot,几乎不需要配置了。
当然,不实现思想不能深刻理解。但实现不是最重要的。
相关文章:

尚国栋:金融风控贷款违约预测(天池学习赛)
尚国栋是华北电力大学数理系大三的学生,LSGO软件技术团队(Dreamtech算法组)成员,参加了多期Datawhale的组队学习,荣获多期优秀队长的称号。 希望参与我们线下组队学习的同学,可以在微信公众号后台回复 线下…

树莓派修改密码(有单独屏幕)
在树莓派终端输入 sudo passwd pi改的是派的密码。 注意:和 sudo passwd root区分 Linux有密码保护,输入了看上去和没输入一样,其实已经输入了
Python每日一练0023
问题 如何判断一个文件是否存在 解决方案 这个问题可以分成几类问题 如果这里的文件指的是文件或目录,我们可以用os.path.exists()方法 >>> import os >>> os.path.exists(test) True 如果这里的文件指的是普通的文件,我们可以用os.pa…

火狐拓展开发 基础知识
平时经常碰到一些零碎的知识,或者其他什么好文章/知识点/插件/库等等,因为实在太多书签已插乱...于是想着干脆写个火狐小add-on。 首先找到了这里ADD-ON SDK: Using the Add-on SDK you can create Firefox add-ons using standard Web techn…

尚育鹏:Leetcode刷题总结(数组)
尚育鹏是华北电力大学数理系大二的学生,LSGO软件技术团队(Dreamtech算法组)成员,参加了多期Datawhale的组队学习。 希望参与我们线下组队学习的同学,可以在微信公众号后台回复 线下组队学习,进入线下组队学…

树莓派实现人脸识别需要做的那些事
1.连接数据库,建表,用来存放图像转码后的字符 2.用Pycharm连接上树莓派 3.下载安装face_recognition需要的依赖 4.配置好环境后运行代码

spring boot 实战 / 可执行war启动参数详解
概述 上一篇文章《spring boot 实战 / mvn spring-boot:run 参数详解》主要讲解了spring boot 项目基于maven插件启动过程中借助profiles的切换工作环境的问题。 这里我们讲一下spring boot项目基于可执行war包启动过程中借助profiles切换工作环境的问题。 配置 这里我们修改…

1476. Lunar Code
http://acm.timus.ru/problem.aspx?space1&num1476 由于前一列对后一列有影响,所以需要保持前一列的状态, 但无需用状态压缩来保存(也保存不了) 只需要保存前一列以 k 个0结尾的个数就可以 代码: import java.mat…

【组队学习】【33期】吃瓜教程——西瓜书+南瓜书
吃瓜教程——西瓜书南瓜书 航路开辟者:谢文睿、秦州领航员:潘磊航海士:谢文睿、秦州 基本信息 开源内容:https://github.com/datawhalechina/pumpkin-bookB 站视频:https://www.bilibili.com/video/BV1Mh411e7VU内容…

FIRST集与FOLLOW集构造步骤
首先,这两个集主语是候选式,是V*中的一个终结符/非终结符。 由于FOLLOW集的定义和构造步骤里面都涉及FIRST集,故先介绍FIRST集。 一.FIRST集的定义如下: FIRST(α){a|α>aβ, a∈Vt, α, β∈V*},若α>(*)ε则规定ε∈FRIS…

Bossie Awards 2013:最佳开源数据中心和云软件
当Facebook 的开源计算项目(OCP)酝酿着设计更好的服务器和网络时,其他开源项目也纷纷重塑数据库,应用平台以及下一代应用程序的虚拟化层。你还不知道吧,下一代的“云”基础设施管理工具终将来自开源产品。 近日&#x…

Laravel开启跨域的方法
1、建立中间件Cors.php 命令:php artisan make:middleware Cors 在/app/Http/Middleware/ 目录下会出现一个Cors.php 文件。 内容如下: <?phpnamespace App\Http\Middleware;use Closure;class Cors {/*** Handle an incoming request.** param \Il…

【组队学习】【33期】动手学数据分析
动手学数据分析 航路开辟者:陈安东、金娟娟、杨佳达、老表、李玲、张文涛、高立业领航员:张文恺航海士:武帅、戴治旭、初晓宇 基本信息 内容属性:精品入门课系列开源内容:https://github.com/datawhalechina/hands-…

LL(1)预测分析表的构造
LL(1)分析法(即预测分析法)是自上而下文法中的一种,使用这种方法需要用到LL(1)预测分析表。 前提:掌握了FIRST集和FOLLOW集的构造。 步骤:对于每一个产生式A→α (1) 对每个终结符a∈FIRST(α)…

新的sublime text已经上传网盘,地址写在下面
注:新网盘地址,之前的关于sublime text的网盘地址已效 网盘地址:http://pan.baidu.com/s/1oVHAm 压缩文件结构 从上到下依次是: 1.sublime text3 32bit便携版本的压缩包,解压可用. 64bit的用户可以将:http:…

WebAssembly Studio:Mozilla提供的WASM工具
\看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!\\\WebAssembly Studio是Mozilla开发的一款在线工具,用于将C/C和Rust代码编译为WASM格式。\\WebAssembly Studio是M…

【组队学习】【33期】3. 李宏毅机器学习(含深度学习)
李宏毅机器学习(含深度学习) 航路开辟者:王茂霖、陈安东,刘峥嵘,李玲领航员:宋泽山航海士:汪健麟、叶梁 基本信息 开源内容:https://github.com/datawhalechina/leeml-notes开源内…

Linux 引导和系统启动
bootstrap 引导程序;鞋带 -> 简称 boot 启动 pull oneself up by one’s bootstraps.(体现计算机系统启动的难处) Linux系统启动分为两大部分: 一. 第一部分:机器启动(BIOS到 加载内核 ,…
【数据结构】支持四则混合运算的计算器(转)
1.给出两个数,用户再指定操作符,要求计算结果,这实现起来很容易; 2.多个数,但只涉及同一优先级的操作符,做起来也很容易; 3.多个数,不同优先级的操作符,怎么办呢…

TypeScript学习笔记之 接口(Interface)
在java中,接口是用来定义一些规范,使用这些接口,就必须实现接口中的方法,而且接口中的属性必须是常量。javascript中是没有接口的概念的。所以TypeScript在编译成 JavaScript 的时候,所有的接口都会被擦除掉。 而TypeS…

【组队学习】【33期】数据可视化(Matplotlib)
数据可视化(Matplotlib) 航路开辟者:杨剑砺、杨煜、耿远昊、李运佳、居凤霞领航员:王森航海士:肖明远、郭棉昇 基本信息 开源内容:https://github.com/datawhalechina/fantastic-matplotlib开源内容&…

布尔定理及证明(完整版)
这篇文章的目的是以布尔代数公理证明定理。 对偶原理:0with1, with 互换以后,公理(定理)任然成立。 布尔代数的公理如下 单变量的布尔代数定理如下 单变量的布尔代数定理很容易用真值表证明。 多变量的布尔定理如下 交换律&…

创建DLL动态链接库——声明导出法
DLL声明导出法:是通过使用__declspec(dllexport),添加到需要导出的函数前,进行声明。 头文件定义如下(OPdll.h): 源文件定义如下(OPdll.cpp): 通过以上两个文件,编译过后即可生成OPdll.lib和OPdll.dll两个库…

【组队学习】【33期】Scratch(一级)
Scratch一级 航路开辟者:王思齐、马燕鹏领航员:马燕鹏航海士:马燕鹏 基本信息 开源内容:https://github.com/datawhalechina/team-learning-program/tree/master/Scratch内容属性:公测课程内容说明:抽取…

Bzoj2780: [Spoj]8093 Sevenk Love Oimaster
题目 传送门 Sol 就是广义\(sam\) 然后记录下每个状态属于哪些串,开\(set\)维护\(parent\)树上启发式合并一下就好了 # include <bits/stdc.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; t…

LR分析法从理解到运用
1、 LR分析器 解释: 分析栈包括符号栈和相应状态栈 分析表包括ACTION表和GOTO表 Ⅰ动作表元素action[Si,aj] 表示当前栈顶状态为S,输入符号为a时所执行的动作。有四种情况:S(移进),r(归约),acc(接受),erro…

Android 判断SD卡是否存在及容量查询
转载:http://blog.csdn.net/xinzheng_wang/article/details/7827775 Android 判断SD卡是否存在及容量查询的简单方法如下:首先要在AndroidManifest.xml中增加SD卡访问权限 [html] view plaincopy <!-- 在SDCard中创建与删除文件权限 --> <uses…
Spring Boot 教程(三): Spring Boot 整合Mybatis
教程简介 本项目内容为Spring Boot教程样例。目的是通过学习本系列教程,读者可以从0到1掌握spring boot的知识,并且可以运用到项目中。如您觉得该项目对您有用,欢迎点击收藏和点赞按钮,给予支持!!教程连载中…

电子学会 软件编程(图形化)一级训练营
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 电子学会 软件编程(图形化)一级训练营 试题来源 青少…

win10 安装 python报错-已安装这个产品的另一版本
尝试清理干净电脑上关于之前安装的Python3,在 输入winR 输入cmd 回车 输入 python 回车 却看到 C:\Users\86136>python ‘python’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 但是再安装,又报出严重错误。 最终解决方案&am…