第三章 高级装配

一、注解@Profile("name")||环境与profile

  1. 可以应用在类级别上或方法级别(用在java的配置代码中)

  2. 使用注解@ActiveProfiles("name")激活相应的Bean

  3. 只有Profile在激活状态时,才会创建相应的Bean

二、注解@Conditional(MyCondition.class)||条件化bean

  1. 创建MyCondition类,实现Condition接口

  2. 若matches()方法返回true,则所有@Conditional注解上引用MyCondition的Bean都会被创建

三、注解@Primary和自定义限定符注解||处理自动装配的歧义性

  1. 注解@Primary:标示首选Bean

  2. 注解@Qualifier("name"):在Java的配置代码中创建限定符,配合@AutoWired注解可使用相应的限定Bean

  3. 创建自定义的限定符注解代替注解@Qualifier("name")注解(解决@Qualifier命名冲突问题)

四、Bean的作用域

  1. 默认:单例模式

  2. 注解@Scope(value):配合@Component或@Bean一起使用,value的值可查看ConfigurableBeanFactory

  3. Session和请求作用域(在会话和请求范围内共享Bean)

五、运行时值注入

  1. 在Java配置的代码中在相应的构造器中直接注入

  2. 注解@PropertySource("xxx.properties"):声明属性资源

    • 使用Environment,env.getProperty(""):检索属性值

    • Environment的其他用法请查看API文档

  3. 属性占位符

  4. Spring表达式语言

posted @ 2016-11-16 14:32  DeadGhost  阅读(147)  评论(0编辑  收藏  举报