spring 注解_Spring注解之@Profile

可以理解为我们在Spring容器中所定义的Bean的逻辑组名称,只有当这些Profile被激活的时候,才会将Profile中所对应的Bean注册到Spring容器中。举个更具体的例子,我们以前所定义的Bean,当Spring容器一启动的时候,就会一股脑的全部加载这些信息完成对Bean的创建;而使用了Profile之后,它会将Bean的定义进行更细粒度的划分,将这些定义的Bean划分为几个不同的组,当Spring容器加载配置信息的时候,首先查找激活的Profile,然后只会去加载被激活的组中所定义的Bean信息,而不被激活的Profile中所定义的Bean定义信息是不会加载用于创建Bean的

使用@profile注解的目的是为了多环境开发,比如开发环境使用dev, 生产环境使用prod, 就可以使用@Profile注解实现不同的开发环境使用不同的数据源。

@profile注解 使用说明:

1. spring3.2之前 @Profile注解用在类上

2. spring3.2 之后 @Profile注解用在方法上

配置类:

@Configuration
public class MainConfig {
@Bean
@Profile("dev")
public Person devPerson() {
System.out.println("dev");
Person person = new Person();
person.setName("devPerson");
return person;
}
@Bean
@Profile("prod")
public Person prodPerson() {
System.out.println("prod");
Person person = new Person();
person.setName("prodPerson");
return person;
}
}

激活方式:

1. spring.profiles.active 激活方式

2. 如果 spring.profiles.active 未配置, 使用spring.profiles.default激活方式

3. 如果前面都未配置,就会加载没有定义在profile中的bean

spring在确定那个profile处于激活状态的时,需要依赖两个独立的属性:spring.profiles.active和spring.profile.default。如果设置了spring.profiles.actives属性,那么它的值就会用来确定那个profile是激活的。如果没有设置spring.profiles.active属性的话,那spring将会查找spring.profiles.default的值。

测试类:

534ee3a1bf0fe8bd9b558d6a9bc5e6fd.png

public class MainClass {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MainConfig.class);
Person person = (Person) context.getBean(Person.class);
System.out.println("person-name : " + person.getName());
}
}
结果:
prod
person-name : prodPerson

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值