zoukankan      html  css  js  c++  java
  • Spring中的Profile

    Spring的Profile注解

    使用场景

    @Profile注解是spring提供的一个用来标明当前运行环境的注解。我们正常开发的过程中经常遇到的问题是,开发环境是一套环境,测试是一套环境,线上部署又是一套环境。这样从开发到测试再到部署,会对程序中的配置修改多次,尤其是从测试到上线这个环节,让测试的也不敢保证改了哪个配置之后能不能在线上运行。为了解决上面的问题,我们一般会使用一种方法,就是针对不同的环境进行不同的配置,从而在不同的场景中跑我们的程序。
    而spring中的@Profile注解的作用就体现在这里。在spring使用DI来注入的时候,能够根据当前制定的运行环境来注入相应的bean。最常见的就是使用不同DataSource了。
    

    java类

    /**
     * @author WGR
     * @create 2020/9/16 -- 20:13
     */
    public class JdbcConfig {
    
        @Value("${jdbc.driver}")
        private String driver;
        @Value("${jdbc.url}")
        private String url;
        @Value("${jdbc.username}")
        private String username;
        @Value("${jdbc.password}")
        private String password;
    
        /**
         * @return
         */
        @Bean("dataSource")
        @Profile("dev")
        public DruidDataSource createDevDataSource() {
            DruidDataSource dataSource = new DruidDataSource();
            dataSource.setDriverClassName(driver);
            dataSource.setUrl(url);
            dataSource.setUsername(username);
            dataSource.setPassword(password);
            dataSource.setMaxActive(10);
            return dataSource;
        }
    
        /**
         * @return
         */
        @Bean("dataSource")
        @Profile("test")
        public DruidDataSource createTestDataSource() {
            DruidDataSource dataSource = new DruidDataSource();
            dataSource.setDriverClassName(driver);
            dataSource.setUrl(url);
            dataSource.setUsername(username);
            dataSource.setPassword(password);
            dataSource.setMaxActive(50);
            return dataSource;
        }
    
        /**
         * @return
         */
        @Bean("dataSource")
        @Profile("produce")
        public DruidDataSource createProduceDataSource() {
            DruidDataSource dataSource = new DruidDataSource();
            dataSource.setDriverClassName(driver);
            dataSource.setUrl(url);
            dataSource.setUsername(username);
            dataSource.setPassword(password);
            dataSource.setMaxActive(100);
            return dataSource;
        }
    
    }
    
    /**
     * @author WGR
     * @create 2020/9/14 -- 20:41
     */
    @Configuration
    @PropertySource({"jdbc.properties"})
    @Import(JdbcConfig.class)
    public class SpirngConfigure {
    }
    
    //测试方法
    /**
     * @author WGR
     * @create 2020/9/20 -- 14:35
     */
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = SpirngConfigure.class)
    @ActiveProfiles("test")
    public class SpringProfileTest {
    
        @Autowired(required = false)
        private DruidDataSource druidDataSource;
    
        @Test
        public void testProfile() {
            System.out.println(druidDataSource.getMaxActive());
        }
    
    }
    
    

    测试结果

    image-20200920145025421

  • 相关阅读:
    Spring+SpringMVC+MyBatis+easyUI整合
    @RequestMapping 用法详解之地址映射(转)
    Servlet的5种方式实现表单提交
    activiti 快速入门--组任务(candidate users)分配(6)
    activiti数据库表结构剖析
    Java程序如何生成Jar、exe及安装文件
    StringEscapeUtils对字符串进行各种转义与反转义
    30分钟学会如何使用Shiro
    Java基础恶补——内存泄露、内存溢出
    ashx文件结合ajax使用(返回json数据)
  • 原文地址:https://www.cnblogs.com/dalianpai/p/13700418.html
Copyright © 2011-2022 走看看