springIOC和AOP学习笔记
前言
记录AOP IOC学习心得
一、IOC
控制反转,将创建bean和管理bean的依赖的工作交给容器处理,控制权从自己手中转移到容器中,是一种思想,依赖注入是实现这种思想的方式
1.依赖注入(DI)
IOC的实现方式有依赖查找和依赖注入,一般使用依赖注入
1.1 依赖注入的三种方式
1.构造器注入:IOC会检查被注入对象的构造方法,取得它所依赖的对象列表,为其注入相应的对象。优点是构造完成就处于就绪状态可以马上使用,缺点是构造方法无法被继承,不能设置默认值,若依赖的对象列表很多,会导致构造对象的参数列表很长,对于非必需的依赖处理可能要引入多个构造方法,造成参数列表的变动,不方便维护。
2.setting注入:不能马上使用,能设置默认值,可以被继承。
3.接口注入:必须通过实现接口为bean注入对象,使用少,因为需要实现不必要的接口,侵入性强
1.2 依赖注入的注解
@Autowired:自动按类型再根据id
@Resource:根据id
@value:注入基本数据类型和String
2 bean的作用域
singleton单例:默认作用域,不管收到多少bean请求,在容器中只存在唯一一个bean实例
prototype多例(原型):每次请求都创建新的bean实例
request:每次http请求都创建一个新bean的实例,放到request作用域中,请求结束后bean会失效并被垃圾回收器回收
session:每个session中都有一个bean的实例,session过期后bean失效
global-session:1.5废弃,全局共享
2.1 通过注解创建bean
@component 把当前类对象存入spring容器中
@Controller @Service @Repository都是语义更精确的衍生注解
@Baan:将第三方类变成组件但又没有源代码
2.2 通过注解配置文件
@configuration:标识该类是配置类,value属性指定配置类的字节码
@componentscan:指定spring容器初始化时要扫描的包,basePackages属性用于指定要扫描的包
@import:用于导入其他配置类
2.3 BeanFactory,FactoryBean,ApplicationContext
BeanFactory:用来管理bean的实例化,定位,配置对象和建立对象的依赖关系,IOC容器的顶级接口,使用延迟加载方式,是多例的。
FactoryBean:通过实现该接口可以自定义生产bean的逻辑。
ApplicationContext:BeanFactory的子类,扩展了更多的功能,使用立即加载方式,是单例的,一般推荐使用。
二、AOP
将代码中公共的部分抽离出来,使用动态代理实现公共的功能
权限认证,日志处理,缓存,事务,错误处理
1.相关术语
aspect:切面
advice:通知
joinpoint:连接点
pointcut:切入点,切入点一定是连接点,连接点不一定是切入点
porxy:代理,实现接口使用动态代理,没实现接口使用cglib
targer:代理的目标对象
weaving:植入,把增强应用到目标对象,创建代理对象的过程
2.相关注解
@aspect:声明类是切面类
@before:前置通知
@after:后置通知
@afterReturning:返回后通知
@afterthrowing:异常通知
@around:环绕通知
总结
很重要!背下来!