profile
@Configuration
public class DataSourceConfig {
@Bean(destroyMethod = "shutdown")
@Profile("dev")
public DataSource embeddedDataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("classpath:schema.sql")
.addScript("classpath:test-data.sql")
.build();
}
@Bean
@Profile("prod")
public DataSource jndiDataSource() {
JndiObjectFactoryBean jndiObjectFactoryBean = new JndiObjectFactoryBean();
jndiObjectFactoryBean.setJndiName("jdbc/myDS");
jndiObjectFactoryBean.setResourceRef(true);
jndiObjectFactoryBean.setProxyInterface(javax.sql.DataSource.class);
return (DataSource) jndiObjectFactoryBean.getObject();
}
}
设置profile
1. 在web应用中的web.xml文件中设置默认的profile
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext__.xml</param-value>
</context-param>
//为上下文中设置默认profile
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>dev</param-value>
</context-param>
//为Servlet设置默认Profile.
<servlet>
<servlet-name>spring-web</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>spring.profiles.deafult</param-name>
<param-value>dev</param-value>
</init-param>
</servlet>
2. 使用注解
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=MagicConfig.class)
@ActiveProfiles("dev")
public class MagicExistsTest {
@Autowired
private ApplicationContext context;
@Test
public void shouldNotBeNull() {
assertTrue(context.containsBean("magicBean"));
}
}
使用@Primary 注解,设置首选项
使用Qualifier 注解 设置限定符
@Configuration
public class CDPlayerConfig {
@Bean
// @Primary //设置优先级
public CompactDisc compactDisc() {
return new SgtPeppers();
}
@Bean
@Qualifier("secondPlayer") //设置限定符
public CDPlayer cdPlayer(CompactDisc compactDisc) {
return new CDPlayer();
}
}