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

  • 相关阅读:
    数组
    字符对象的方法
    事件
    判断数据类型
    数据类型和变量
    语法
    快速入门
    JavaScript简介
    Spring init-method和destroy-method属性的使用
    spring3后提供了的context:property-placeholder/元素
  • 原文地址:https://www.cnblogs.com/dalianpai/p/13700418.html
Copyright © 2011-2022 走看看