spring之@Profile注解

2021-02-17 06:19

阅读:521

标签:root   auth   -o   lan   dbcp   run   -name   目的   void   

一 前言

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

知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)

二 @profile实现多环境配置

2.1 @profile配置

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

@profile注解 使用说明:

  1. spring3.2之前 @Profile注解用在类上
  2. spring3.2 之后 @Profile注解用在 方法上
/**
 * @Author lsc
 * 

spring3.2之前 @Profile注解用在类上 * spring3.2 之后 @Profile注解用在 方法上 *

*/ @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中配置,示例如下

2.2 激活方式

激活方式一

  1. spring.profiles.active 激活方式
  2. 如果 spring.profiles.active 未配置, 使用spring.profiles.default激活方式
  3. 如果前面都为配置,就会加载没有定义在profile中的bean;

激活方式二

在web.xml 中配置

spring.profiles.activedevzszxzServletorg.springframework.web.servlet.DispatcherServletspring.profiles.defaultdev1zszxzServlet/

激活方式三

在类上使用@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 query = jdbc.query("select * from customer", new RowMapper() {
            @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);
    }
}

源码地址:公众号汇总文章位置

spring之@Profile注解

标签:root   auth   -o   lan   dbcp   run   -name   目的   void   

原文地址:https://www.cnblogs.com/zszxz/p/12700309.html


评论


亲,登录后才可以留言!