IOC(控制反转):本来是由应用程序管理的对象之间的依赖关系,现在交给了容器管理,这就叫控制反转,即交给了IOC容器,Spring的IOC容器主要使用DI方式实现的。不需要主动查找,对象的查找、创建和定位全部由容器管理。
1.大量减少了Factory和Singleton的数量,代码层次更加清晰主要原因是我们不在查找、定位、创建、管理对象之间的依赖关系,都交给IOC容器管理了。
2.Spring的IOC容器是一个轻量级的容器,没有侵入性,不需要依赖容器的API,也不需要实现一些特殊的接口。
3.一个合理的设计最好尽量避免侵入性。
4.提供了AOP声明式服务能力,可以针对POJO对象提供声明式服务能力,如:声明式事务
5.鼓励了我们面向接口编程
6.减少了代码中的耦合,将耦合推迟到了配置文件中,发生了变化也更容易控制
Spring注入:
1.了解常见的属性注入:int ,String, list, set, map的注入
2.什么是属性编辑器和作用?
*将spring配置文件中的字符串转换成相应的Java对象
*spring内置了一些属性编辑器,也可以自定义属性编辑器
3.如何自定义属性编辑器?
*继承PropertyEditorSupport
*覆盖setAsText()方法
*将自定义的属性编辑器注入到spring中
4.多配置文件的读取方式
*数组
*采用*匹配模式
5.如何减少spring的配置文件
*通过bean标签将公共的配置提取出来,然后指定<bean>标签中的abstract属性为true
*在其他<bean>标签中指定其他parent即可
6.spring默认在创建BeanFactory时,将配置文件中所有的对象实例化并进行注入,但可以采用相关的属性延迟配置文件初始化,如:default-lazy-init="true"
Spring bean的作用域
scope取值:
*singleton:默认值,每次调用getBean()向IOC容器取得对象是相同的
*prototype:每次调用getBean()向IOC容器取得对象是不相同的
根据名词完成自动匹配
根据类型完成自动匹配
AOP相关概念:
Cross Cutting Concern
-是一种独立服务,它会遍布在系统的处理流程之中
Aspect
-对横切性关注点的模块化
Advice
-对横切性关注点的具体实现
Pointcut
-定义了Advice应用到哪些JoinPoint上,对Spring来说是方法调用
JoinPoint
-Advice在应用程序上执行的点或时机,Spring只支持方法的JoinPoint,这个点也可以使属性修改,如:Aspectj可以支持
Weave
-将Advice应用到TargetObject上的过程叫织入,Spring支持的是动态织入
TargetObject
-Advice被应用的对象
Proxy
-SpringAOP默认使用JDK的动态代理,它的代理是运行时创建,也可以使用CGLIB代理
Introduction
-可以动态的为类添加方法