1 介绍
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Conditional(ProfileCondition.class)
public @interface Profile {
/**
* The set of profiles for which the annotated component should be registered.
*/
String[] value();
}
可以用在类上也可以用在方法上
其实就是基于@Conditional
实现的
作用
根据不同的
2 演示
新建一个model: 10-spring-annnotion-profile
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>study.wyy</groupId>
<artifactId>00-spring-annnotion-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.6.RELEASE</version>
</dependency>
</dependencies>
根据不同的环境注入不同的Person对象
package study.wyy.spring.anno.profile.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import study.wyy.spring.anno.common.model.Person;
/**
* @author by wyaoyao
* @Description
* @Date 2020/11/22 7:23 下午
*/
@Configuration
public class SpringConfig {
@Bean("devAdmin")
@Profile("dev")
public Person windowsAdmin(){
return new Person("devAdmin",18);
}
@Bean("testAdmin")
@Profile("test")
public Person macAdmin(){
return new Person("testAdmin",18);
}
@Bean("prodAdmin")
@Profile("prod")
public Person linuxAdmin(){
return new Person("prodAdmin",18);
}
}
测试
package study.wyy.spring.anno.profile.test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import study.wyy.spring.anno.common.model.Person;
import study.wyy.spring.anno.profile.config.SpringConfig;
/**
* @author by wyaoyao
* @Description
* @Date 2020/11/22 8:31 下午
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
@ActiveProfiles("test")
public class Test {
@Autowired
Person person;
@org.junit.Test
public void test01(){
System.out.println(person);
}
}
输出
Person(name=testAdmin, age=18)