Spring @Profile注解實(shí)現(xiàn)多環(huán)境配置
一 前言
springboot中使用多環(huán)境開發(fā)如此簡單,你想知道spring中是如何實(shí)現(xiàn)的么?一起來學(xué)習(xí)吧!!你為什么不好好學(xué)習(xí)基礎(chǔ),面試一直被diss呢?說到底還不是你認(rèn)為都會了,其實(shí)你都不會,一問三不知??!
二 @profile實(shí)現(xiàn)多環(huán)境配置
2.1 @profile配置
使用@profile注解的目的是未了多環(huán)境開發(fā),比如開發(fā)環(huán)境使用dev, 生產(chǎn)環(huán)境使用prod,就可以使用@Profile注解實(shí)現(xiàn)不同的開發(fā)環(huán)境使用不同的數(shù)據(jù)源;
@profile注解 使用說明:
spring3.2之前 @Profile注解用在類上
spring3.2 之后 @Profile注解用在 方法上
/**
* @Author lsc
* <p>spring3.2之前 @Profile注解用在類上
* spring3.2 之后 @Profile注解用在 方法上
* </p>
*/
@Configuration
public class DataSourceConfig {
@Bean
@Profile("dev")
public DataSource devDataSource() {
System.out.println(" dev DataSource !!");
BasicDataSource basicDataSource = new BasicDataSource();
basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
basicDataSource.setUrl("jdbc:mysql://localhost:3308/zszxz");
basicDataSource.setUsername("root");
basicDataSource.setPassword("1234");
return basicDataSource;
}
@Bean
@Profile("prod")
public DataSource prodDataSource() {
System.out.println(" prod DataSource !!");
BasicDataSource basicDataSource = new BasicDataSource();
basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
basicDataSource.setUrl("jdbc:mysql://localhost:3306/zszxz");
basicDataSource.setUsername("root");
basicDataSource.setPassword("1234");
return basicDataSource;
}
}
如果你是在xml中配置,示例如下
<beans profile="dev">
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/zszxzb"
p:username="root"
p:password="1234"/>
</beans>
<beans profile="prod">
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/zszxzb"
p:username="root"
p:password="1234"/>
</beans>
2.2 激活方式
激活方式一
- spring.profiles.active 激活方式
- 如果 spring.profiles.active 未配置, 使用spring.profiles.default激活方式
- 如果前面都為配置,就會加載沒有定義在profile中的bean;
激活方式二
在web.xml 中配置
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>dev</param-value>
</context-param>
<servlet>
<servlet-name>zszxzServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>spring.profiles.default</param-name>
<param-value>dev</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>zszxzServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
激活方式三
在類上使用@ActiveProfiles注解
測試如下
@RunWith(SpringJUnit4ClassRunner.class)//創(chuàng)建spring應(yīng)用上下文
@ContextConfiguration(classes= DataSourceConfig.class)//加載配置類
@ActiveProfiles("dev")
public class ProfileTest {
@Autowired
private DataSource dataSource;
@Test
public void sheetTest(){
JdbcTemplate jdbc = new JdbcTemplate(dataSource);
List<String> query = jdbc.query("select * from customer", new RowMapper<String>() {
@Override
public String mapRow(ResultSet rs, int rowNum) throws SQLException {
return rs.getLong("id") + ":" + rs.getString("customer_name");
}
});
// [19:知識追尋者, 20:知識追尋者, 21:知識追尋者, 22:知識追尋者, 23:知識追尋者]
System.out.println(query);
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Maven profile實(shí)現(xiàn)不同環(huán)境的配置管理實(shí)踐
- Linux下環(huán)境變量配置方法小結(jié)(.bash_profile和.bashrc的區(qū)別)
- spring Profile如何為不同環(huán)境提供不同的配置支持
- springboot學(xué)習(xí)筆記之 profile多環(huán)境配置切換的實(shí)現(xiàn)方式
- 使用Spring boot 的profile功能實(shí)現(xiàn)多環(huán)境配置自動切換
- 使用maven profile指定配置文件打包適用多環(huán)境的方法
- maven profile自動切換環(huán)境參數(shù)的2種方法詳解
- 詳解springboot + profile(不同環(huán)境讀取不同配置)
- Spring profile通過多種方法實(shí)現(xiàn)多環(huán)境支持
相關(guān)文章
java實(shí)現(xiàn)大文件導(dǎo)出的實(shí)現(xiàn)與優(yōu)化
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)大文件導(dǎo)出的實(shí)現(xiàn)與優(yōu)化的相關(guān)資料,文中的示例代碼講解詳細(xì),對我們深入了解java有一定的幫助,感興趣的小伙伴可以了解下2023-11-11
Java使用Statement接口執(zhí)行SQL語句操作實(shí)例分析
這篇文章主要介紹了Java使用Statement接口執(zhí)行SQL語句操作,結(jié)合實(shí)例形式詳細(xì)分析了Java使用Statement接口針對mysql數(shù)據(jù)庫進(jìn)行連接與執(zhí)行SQL語句增刪改查等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-07-07
Spring?boot配置綁定和配置屬性校驗(yàn)的方式詳解
這篇文章主要介紹了Spring?boot配置綁定和配置屬性校驗(yàn),SpringBoot 提供了2 種方式進(jìn)行配置綁定,即使用 @ConfigurationProperties 注解和使用 @Value 注解,需要的朋友可以參考下2022-05-05
用SpringMVC編寫一個HelloWorld的詳細(xì)過程
SpringMVC是Spring的一個后續(xù)產(chǎn)品,是Spring的一個子項(xiàng)目<BR>SpringMVC?是?Spring?為表述層開發(fā)提供的一整套完備的解決方案,本文我們將用SpringMVC編寫一個HelloWorld,文中有詳細(xì)的編寫過程,需要的朋友可以參考下2023-08-08
Springboot集成Elasticsearch的步驟與相關(guān)功能
ElasticSearch是開源搜索平臺領(lǐng)域的一個新成員,?ElasticSearch是一個基于Lucene構(gòu)建的開源,分布式,RESTful搜索引擎,這篇文章主要給大家介紹了關(guān)于Springboot集成Elasticsearch的相關(guān)資料,需要的朋友可以參考下2021-12-12
Java實(shí)現(xiàn)在線編輯預(yù)覽office文檔詳解
PageOffice是一款在線的office編輯軟件,幫助Web應(yīng)用系統(tǒng)或Web網(wǎng)站實(shí)現(xiàn)用戶在線編輯Word、Excel、PowerPoint文檔,下面我們就來看看如何使用Java實(shí)現(xiàn)在線預(yù)覽office吧2024-01-01
java求數(shù)組元素重復(fù)次數(shù)和java字符串比較大小示例
這篇文章主要介紹了java求數(shù)組元素重復(fù)次數(shù)和java字符串比較大小示例,需要的朋友可以參考下2014-04-04
在已有spring的基礎(chǔ)上集成hibernate的實(shí)例講解
下面小編就為大家?guī)硪黄谝延衧pring的基礎(chǔ)上集成hibernate的實(shí)例講解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11

