序文
SpringBootでマルチ環境開発を使用するのはとても簡単ですが、Springbootでどのように実装されているか知りたいですか?一緒に学びましょう!!基礎を勉強して、面接を受けてみませんか?結局のところ、それはあなたがそうなると思っていることではありません。!
オープンソースの精神を受け継ぎ、技術知識を広める。
マルチ環境構成を実現する2つの@profile
2.1 @profileの設定
@profileアノテーションを使用する目的は、devを使用する開発環境、prodを使用する本番環境など、複数の環境を開発することです。@ Profileアノテーションを使用すると、異なるデータソースを使用して異なる開発環境を実現できます。
@profileアノテーションの手順:
- Spring 3.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アクティベーション方法
アクティベーション方法1
- spring.profiles.activeアクティベーションメソッド
- spring.profiles.activeが構成されていない場合は、spring.profiles.defaultアクティベーションメソッドを使用します
- 以前の構成がすべての場合、プロファイルで定義されていないBeanがロードされます。
アクティベーション方法2
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>
アクティベーション方法3
クラスで@ActiveProfiles
注釈を使用する
テストは次のとおりです
@RunWith(SpringJUnit4ClassRunner.class)//创建spring应用上下文
@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);
}
}
送信元アドレス:パブリックアカウントの要約記事の場所