弹簧配置文件提供了一种分离应用程序配置部分的方法。
任何 或 都可以标记为 在加载时限制,这意味着仅当活动配置文件与映射到组件的配置文件相同时,才会在应用程序上下文中加载组件或配置。@Component
@Configuration
@Profile
要将配置文件标记为活动状态,必须在中设置属性或将其作为 VM 参数指定为spring.profiles.active
application.properties
-Dspring.profiles.active=dev
在编写 Junit 时,您可能希望激活一些配置文件,以便加载所需的配置或组件。同样可以通过使用注释来实现。@ActiveProfile
考虑映射到配置文件的配置类dev
@Configuration
@Profile("dev")
public class DataSourceConfig {
@Bean
public DataSource dataSource() {
DriverManagerDataSource ds = new DriverManagerDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost/test");
ds.setUsername("root");
ds.setPassword("mnrpass");
return ds;
}
@Bean
public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(dataSource());
}
}
考虑映射到配置文件的配置类prod
@Configuration
@Profile("prod")
public class DataSourceConfig {
@Bean
public DataSource dataSource() {
DriverManagerDataSource ds = new DriverManagerDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:oracle://xxx.xxx.xx.xxx/prod");
ds.setUsername("dbuser");
ds.setPassword("prodPass123");
return ds;
}
@Bean
public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(dataSource());
}
}
因此,如果您想在配置文件中运行 junit 测试用例,则必须使用注释。这将加载在开发配置文件中定义的数据源配置 Bean。dev
@ActiveProfile('dev')
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@ActiveProfiles("dev")
public class Tests{
// Junit Test cases will use the 'dev' profile DataSource Configuration
}
结论
@Profile
用于将类映射到配置文件
@ActiveProfile
用于在 junit 测试类执行期间激活特定配置文件