日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring 环境与profile(一)——超简用例

發布時間:2023/12/9 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring 环境与profile(一)——超简用例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是profile,為什么需要profile?

在開發時,不同環境(開發、聯調、預發、正式等)所需的配置不同導致,如果每改變一個環境就更改配置不但麻煩(修改代碼、重新構建)而且容易出錯。Spring提供了解決方案。

方法一:配置profile bean

@Configuration public class DataSourceConfig {//Spring 引入@Profile 制定某個bean屬于哪個profile//在方法級別上使用@Profile注解
@Bean@Profile("dev")public DataSource embeddedDataSource() {return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).addScript("classpath:schema.sql").addScript("classpath:dev-data.sql").build();}@Bean@Profile("prod")public DataSource embeddedDataSourceDev() {return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).addScript("classpath:schema.sql").addScript("classpath:prod-data.sql").build();} }

在同一個類的不同方法上使用@Profile注解與@Bean一起使用

方法二:在XML中配置bean

與方法一等價的方式

<?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:jdbc="http://www.springframework.org/schema/jdbc"xmlns:jee="http://www.springframework.org/schema/jee" xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation=" http://www.springframework.org/schema/jeehttp://www.springframework.org/schema/jee/spring-jee.xsdhttp://www.springframework.org/schema/jdbchttp://www.springframework.org/schema/jdbc/spring-jdbc.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><beans profile="dev"><jdbc:embedded-database id="dataSource" type="H2"><jdbc:script location="classpath:schema.sql" /><jdbc:script location="classpath:dev-data.sql" /></jdbc:embedded-database></beans><beans profile="prod"><jdbc:embedded-database id="dataSource" type="H2"><jdbc:script location="classpath:schema.sql" /><jdbc:script location="classpath:prod-data.sql" /></jdbc:embedded-database></beans> </beans>

激活profile

Spring在確定哪個profile處于激活狀態時,需要依賴兩個獨立屬性:sping.profiles.active和spring.profiles.default。Spring提供了@ActiveProfiles用來指定運行測試時要激活哪個profile,如果沒有指定sping.profiles.active,會采用spring.profiles.default的默認值。

測試

package profiles;import static org.junit.Assert.*;import java.sql.ResultSet; import java.sql.SQLException; import java.util.List;import javax.sql.DataSource;import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.myapp.DataSourceConfig;public class DataSourceConfigTest {@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes=DataSourceConfig.class)@ActiveProfiles("dev")public static class DevDataSourceTest {@Autowiredprivate DataSource dataSource;@Testpublic void shouldBeEmbeddedDatasource() {assertNotNull(dataSource);JdbcTemplate jdbc = new JdbcTemplate(dataSource);List<String> results = jdbc.query("select id, name from Things", new RowMapper<String>() {@Overridepublic String mapRow(ResultSet rs, int rowNum) throws SQLException {return rs.getLong("id") + ":" + rs.getString("name");}});assertEquals(1, results.size());assertEquals("1:A", results.get(0));}}@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("classpath:datasource-config.xml")@ActiveProfiles("prod")public static class ProductionDataSourceTest_XMLConfig {@Autowiredprivate DataSource dataSource;@Testpublic void shouldBeEmbeddedDatasource() {assertNotNull(dataSource);JdbcTemplate jdbc = new JdbcTemplate(dataSource);List<String> results = jdbc.query("select id, name from Things", new RowMapper<String>() {@Overridepublic String mapRow(ResultSet rs, int rowNum) throws SQLException {return rs.getLong("id") + ":" + rs.getString("name");}});assertEquals(1, results.size());assertEquals("1:B", results.get(0));}}}

代碼

地址

轉載于:https://www.cnblogs.com/kaituorensheng/p/8763683.html

總結

以上是生活随笔為你收集整理的Spring 环境与profile(一)——超简用例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。