Spring @Profile注解实现多环境配置
一前言
springboot中使用多环境开发如此简单,你想知道spring中是如何实现的么?一起来学习吧!!你为什么不好好学习基础,面试一直被diss呢?说到底还不是你认为都会了,其实你都不会,一问三不知!!
二@profile实现多环境配置
2.1@profile配置
使用@profile注解的目的是未了多环境开发,比如开发环境使用dev,生产环境使用prod,就可以使用@Profile注解实现不同的开发环境使用不同的数据源;
@profile注解使用说明:
spring3.2之前@Profile注解用在类上
spring3.2之后@Profile注解用在方法上
/** *@Authorlsc *spring3.2之前@Profile注解用在类上 *spring3.2之后@Profile注解用在方法上 *
*/ @Configuration publicclassDataSourceConfig{ @Bean @Profile("dev") publicDataSourcedevDataSource(){ System.out.println("devDataSource!!"); BasicDataSourcebasicDataSource=newBasicDataSource(); basicDataSource.setDriverClassName("com.mysql.jdbc.Driver"); basicDataSource.setUrl("jdbc:mysql://localhost:3308/zszxz"); basicDataSource.setUsername("root"); basicDataSource.setPassword("1234"); returnbasicDataSource; } @Bean @Profile("prod") publicDataSourceprodDataSource(){ System.out.println("prodDataSource!!"); BasicDataSourcebasicDataSource=newBasicDataSource(); basicDataSource.setDriverClassName("com.mysql.jdbc.Driver"); basicDataSource.setUrl("jdbc:mysql://localhost:3306/zszxz"); basicDataSource.setUsername("root"); basicDataSource.setPassword("1234"); returnbasicDataSource; } }
如果你是在xml中配置,示例如下
2.2激活方式
激活方式一
- spring.profiles.active激活方式
- 如果spring.profiles.active未配置,使用spring.profiles.default激活方式
- 如果前面都为配置,就会加载没有定义在profile中的bean;
激活方式二
在web.xml中配置
spring.profiles.active dev zszxzServlet org.springframework.web.servlet.DispatcherServlet spring.profiles.default dev 1 zszxzServlet /
激活方式三
在类上使用@ActiveProfiles注解
测试如下
@RunWith(SpringJUnit4ClassRunner.class)//创建spring应用上下文 @ContextConfiguration(classes=DataSourceConfig.class)//加载配置类 @ActiveProfiles("dev") publicclassProfileTest{ @Autowired privateDataSourcedataSource; @Test publicvoidsheetTest(){ JdbcTemplatejdbc=newJdbcTemplate(dataSource); Listquery=jdbc.query("select*fromcustomer",newRowMapper (){ @Override publicStringmapRow(ResultSetrs,introwNum)throwsSQLException{ returnrs.getLong("id")+":"+rs.getString("customer_name"); } }); //[19:知识追寻者,20:知识追寻者,21:知识追寻者,22:知识追寻者,23:知识追寻者] System.out.println(query); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。