Spring
About 1 min
Spring
IoC、AOP
IoC
对象创建(IoC)和依赖关系(DI)
默认是单例的,但是可以配置成 prototype
对象创建i
- 配置文件,标签bean,id和class,用ClassPath
- 配置类,用AnnotationConfigApplicationContext容器(需要register和refresh)
依赖注入的方式
通过构造方法,需要提供带参的构造方法,推荐用name属性来注入
通过setter,
自动装配
byType,
byName 要保证字段名和bean名一致
AOP
面向切面编程
业务代码与关注点代码分离
代理模式
静态代理的本质:接口代理,代理类需要实现目标类相同的接口
动态代理
反射来调用方法:方法对象(对象, args)
实现接口的类型
JDK动态代理,反射
- Method
没实现接口的类型
CGlib 动态代理,继承子类
Enhancer对象
- enhancer.setSuperclass()设置父类
- enhancer.setCallback()设置MethodInterception
- enhancer.create()可以创建目标类的代理子类对象
类型:com.sun.proxy
切入点表达式
描述在哪个类的哪个方法上加入方法
- expression(返回值类型, 路径.类名.方法名(参数列表))
代理类最后就是Enhancer类
前面类配置
通知方式
- before 前置通知
- after 后置通知
- afterReturn
- afterThrowing
- around环绕通知,可以写异常处理
xml
annotation
日志处理
注解
- 应用范围
- 声明周期