ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### @Profile @Profile注解应用在了类级别上。它会告诉Spring这个配置类中的bean只有在dev profile激活时才会创建。如果dev profile没有激活的话,那么带有@Bean注解的方法都会被忽略掉 * ### java config配置profile ``` @Configuration public class DatasourceConfig { @Bean @Profile("dev") public DataSource devDataSource(){ return new DataSource("dev datasource"); } @Bean @Profile("prod") public DataSource proDataSource(){ return new DataSource("prod datasource"); } } ``` ### XML配置profile ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"> <!-- 定义开发的profile --> <beans profile="development"> </beans> <!-- 定义生产使用的profile --> <beans profile="produce"> </beans> </beans> ``` ### 激活Profile方式 * spring.profiles.active=prod 如果当spring.profiles.active属性被设置时,那么Spring会优先使用该属性对应值来激活Profile。当spring.profiles.active没有被设置时,那么Spring会根据spring.profiles.default属性的对应值来进行Profile进行激活。如果上面的两个属性都没有被设置,那么就不会有任务Profile被激活,只有定义在Profile之外的Bean才会被创建 * 单元测试 ``` import org.junit.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.SpringRunner; @RunWith(SpringRunner.class) @ContextConfiguration(classes = DatasourceConfig.class) @ActiveProfiles("prod") public class DataSourceConfigTest { @Autowired private DataSource dataSource; @Test public void testProfile(){ System.err.println("dataSource==>" + dataSource.getSource()); } } ```