Spring @Profile注解实现多环境配置

 更新时间:2020年04月20日 09:20:40   作者:知识追寻者  
这篇文章主要介绍了Spring @Profile注解实现多环境配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一 前言

springboot中使用多环境开发如此简单,你想知道spring中是如何实现的么?一起来学习吧!!你为什么不好好学习基础,面试一直被diss呢?说到底还不是你认为都会了,其实你都不会,一问三不知!!

二 @profile实现多环境配置

2.1 @profile配置

使用@profile注解的目的是未了多环境开发,比如开发环境使用dev, 生产环境使用prod,就可以使用@Profile注解实现不同的开发环境使用不同的数据源;

@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)//创建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);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java实现大文件导出的实现与优化

    java实现大文件导出的实现与优化

    这篇文章主要为大家详细介绍了java实现大文件导出的实现与优化的相关资料,文中的示例代码讲解详细,对我们深入了解java有一定的帮助,感兴趣的小伙伴可以了解下
    2023-11-11
  • Java使用Statement接口执行SQL语句操作实例分析

    Java使用Statement接口执行SQL语句操作实例分析

    这篇文章主要介绍了Java使用Statement接口执行SQL语句操作,结合实例形式详细分析了Java使用Statement接口针对mysql数据库进行连接与执行SQL语句增删改查等相关操作技巧与注意事项,需要的朋友可以参考下
    2018-07-07
  • Spring boot配置绑定和配置属性校验的方式详解

    Spring boot配置绑定和配置属性校验的方式详解

    这篇文章主要介绍了Spring boot配置绑定和配置属性校验,SpringBoot 提供了2 种方式进行配置绑定,即使用 @ConfigurationProperties 注解和使用 @Value 注解,需要的朋友可以参考下
    2022-05-05
  • Java中DecimalFormat用法详解

    Java中DecimalFormat用法详解

    这篇文章主要为大家详细介绍了Java中DecimalFormat的用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • 用SpringMVC编写一个HelloWorld的详细过程

    用SpringMVC编写一个HelloWorld的详细过程

    SpringMVC是Spring的一个后续产品,是Spring的一个子项目<BR>SpringMVC 是 Spring 为表述层开发提供的一整套完备的解决方案,本文我们将用SpringMVC编写一个HelloWorld,文中有详细的编写过程,需要的朋友可以参考下
    2023-08-08
  • Springboot集成Elasticsearch的步骤与相关功能

    Springboot集成Elasticsearch的步骤与相关功能

    ElasticSearch是开源搜索平台领域的一个新成员, ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎,这篇文章主要给大家介绍了关于Springboot集成Elasticsearch的相关资料,需要的朋友可以参考下
    2021-12-12
  • Java实现在线编辑预览office文档详解

    Java实现在线编辑预览office文档详解

    PageOffice是一款在线的office编辑软件,帮助Web应用系统或Web网站实现用户在线编辑Word、Excel、PowerPoint文档,下面我们就来看看如何使用Java实现在线预览office吧
    2024-01-01
  • 解决@Autowired注入static接口的问题

    解决@Autowired注入static接口的问题

    这篇文章主要介绍了解决@Autowired注入static接口的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • java求数组元素重复次数和java字符串比较大小示例

    java求数组元素重复次数和java字符串比较大小示例

    这篇文章主要介绍了java求数组元素重复次数和java字符串比较大小示例,需要的朋友可以参考下
    2014-04-04
  • 在已有spring的基础上集成hibernate的实例讲解

    在已有spring的基础上集成hibernate的实例讲解

    下面小编就为大家带来一篇在已有spring的基础上集成hibernate的实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11

最新评论