Spring学习笔记(二) Bean的高级装配

本文介绍了Spring框架中如何通过配置profiles来适应不同环境,并探讨了条件化bean、解决自动装配歧义性的方法、bean作用域及运行时值注入等内容。

一、环境与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)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值