一:Spring框架体系
二:IOC
1.IOC定义
IOC:控制反转,是一个理论,概念,思想。把对象的创建,赋值,管理工作都交给代码之外的容器实现,也就是对象的创建是有其它外部资源完成,这样做实现了与解耦合。
(1)正转:对象的创建、赋值等操作交由程序员手动完成,即使用类似new Xxx(Xxx Xxx)、Xxx.setXxx()语句完成对象的创建与赋值,缺点是一旦程序功能发生改变,涉及到的类就要修改代理,耦合度高,不便于维护和管理。
(2)反转:对象的创建、赋值等操作交由代码之外的容器实现,有容器代替程序员完成对象的创建、赋值;且当程序功能发生变化时,只需要修改容器的配置文件即可。
2.I(Dependency Injection依赖注入)
(1)IOC的作用:降低程序之间的耦合(依赖关系)
概念:依赖关系的管理交给spring维护,在当前类需要用到其他类的对象,由spring为我们提供,只需在配置文件中说明关系的维护;
(2)能够注入的数据有三类:
1>基本类型和string
2>其他bean类型(在配置文件中或者注解配置过的bean)
3>复杂集合类型
(3)注入方式
1>使用构造方法
2>set方法注入(常用)
3>基于注解配置IoC容器
用于创建对象:
作用和XML配置文件的<bean>标签的实现功能一致;
@Component:用于当前类存入spring容器
属性:value: 用于指定bean的id,当我们不写时,默认为当前类的名称且首字母小写
@Controller : 用于表现层
@Service: 用于业务层
@Repository: 用于持久层
用于注入数据:
作用和XML配置文件中的bean标签中的<property>作用一样;
@Autowried:自动按类型注入,只要容器中由唯一的bean对象类型和要注入的变量类型匹配,就可以成功注入出现位置:可以为成员变量,也可以为方法
@Qualifier: 再按照类中注入的基础之上再按照名称注入,它在给类成员注入时不能单独使用和Autowired配合使用,但是给方法注入时可以
属性:value:用于指定注入bean的id
@Resources:直接按照bean的id注入,它可以独立使用
属性:name:用于指定bean的id
以上三种注入只能注入其他bean类型的数据,而基本类型和String类型无法使用上述注解实现
@Value:用于注入基本类型和String类型数据
属性:value:用于指定数据的值,它可以使用spring中的spEL(也就是spring的el表达式)
SpEl的写法:${表达式}
三:给容器中注册组件
1.导包
2.写配置
3.测试
四:AOP
1.AOP(Aspect Oriented Programming),即面向切面编程,使用"横切"技术,AOP把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处基本相似,比如权限认证、日志、事物。AOP的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来。
2.AOP核心概念
(1)横切关注点
对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点
(2)切面(aspect)
类是对物体特征的抽象,切面就是对横切关注点的抽象
(3)连接点(joinpoint)
被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器
(4)切入点(pointcut)
对连接点进行拦截的定义
(5)通知(advice)
所谓通知指的就是指拦截到连接点之后要执行的代码,通知分为前置、后置、异常、最终、环绕通知五类
(6)目标对象
代理的目标对象
(7)织入(weave)
将切面应用到目标对象并导致代理对象创建的过程
(8)引入(introduction)
在不修改代码的前提下,引入可以在运行期为类动态地添加一些方法或字段
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。