Spring配置的三种可选方案:
- XML显式配置
- Java中显式配置
- 使用注解隐式bean发现和自动装配
建议优先使用注解自动装配,而后用Java配置补充。
高级装配技术:
@Profile:能够通过设置Profile的激活状态,选择创建bean。常用于解决生产,测试,发布时,注入对象的差异问题。
@Conditional:条件化bean。只有条件为true时才会创建对象。
自动装配的歧义性:
@Primary:标志首选的bean。
@Qualifier:限定自动装配的bean。
bean的作用域:
- 单例(Singleton)
- 原型(Prototype):每次注入或者通过上下文获取时,都会创建一个新的bean实例。
- 会话(Session)
- 请求(Rquest)
使用@Scope改变作用域。需要注意在会话和请求作用域中,常使用作用域代理(proxyModel)。
运行时注入:解决硬编码问题。有两种方式:属性占位符${ }和SpEL。
AOP:面向切面编程。
基本术语:
- 通知(Advice):Before,After,After-return,After-throwing,Around。
- 连接点(Join point)
- 切点(Pointcut)
- 切面(Aspect)
- 引入(Introduction)
- 织入(Weaving)
AOP的应用有两个方面,一个是对现有方法的增强。还有一个是可以对现有类添加新的方法,从而引入新功能。