一、环境与profile
1.配置profile bean
将所有不同的bean定义整理到一个或多个profile中,在将应用部署到每个环境时,确保对应的profile处于激活状态。
//在类级别上注解
@Configuration
@Profile("name")
//告诉Spring这个配置类中的bean只有当该profile被激活时才被创建
//在方法级别上注解
@Bean
@profile("name")
还可以通过<Bean>元素的peofile属性,在xml文件中进行配置。
2.激活profile
如果有spring.profiles.active属性,它的值就用来确定哪个profile是激活的
否则查找spring.profiles.default,如果两者都没有,那就没有激活的profile
<%在web.xml中设置默认的profile%>
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>dev</param-value>
</context-param>@ActiveProfiles
//指定测试时激活那些Profiles二、条件化的bean
@Conditional("MagicExistsCondition.class")
//MagicExistsCondition是一个类,实现Condition接口的bool matches方法
三、处理自动装配的歧义性
仅有一个bean匹配的结果时,自动装配是有效的,当bean匹配多个结果时,会发生错误
1.标识首选的bean
//标识为首选的bean
@Component
@Primary
//或者
@Bean
@Primary同样,也可以在xml中配置
2.限定自动装配的bean
@Qualifier("")//限定注解Java不允许在同一个条目上重复出现相同类型的多个注解
所以如果限定过多的话,可以创建自定义的的注解
四、Bean的作用域
默认情况下Bean都是以单例的形式创建的
Spring定义了多种作用域,可以基于这些作用域创建bean,包括:
单例(Singleton):在整个应用中,只创建bean的一个实例
原型(Prototype)
会话(Session)
请求(Request)
五、运行时值注入
Spring提供了两种在运行时求值的方式:
属性占位符Property placeholder
Spring表达式语言(SpEL)
本文介绍了Spring框架中如何通过配置profiles来适应不同环境,并探讨了条件化bean、解决自动装配歧义性的方法、bean作用域及运行时值注入等内容。
907

被折叠的 条评论
为什么被折叠?



