zoukankan      html  css  js  c++  java
  • Spring源码窥探之:@Profile

    Spring为我们提供的多环境启动

    1. 配置类,注入三个不同环境的数据源,并加上注解

    /**
     * description: 以下准备了三套不同环境的数据源
     *
     * @author 70KG
     * @date 2018/12/17
     */
    @Configuration
    public class MyConfig {
    
        @Bean
        @Profile("dev")
        public MySqlInfo mySqlInfoDev() {
            MySqlInfo mySqlInfo = new MySqlInfo();
            mySqlInfo.setUserName("zhangsan");
            mySqlInfo.setPassWord("1111");
            mySqlInfo.setDriver("com.mysql.jdbc.driver");
            System.out.println("dev数据源被注入。。。。。。");
            return mySqlInfo;
        }
    
        @Bean
        @Profile("test")
        public MySqlInfo mySqlInfoTest() {
            MySqlInfo mySqlInfo = new MySqlInfo();
            mySqlInfo.setUserName("lisi");
            mySqlInfo.setPassWord("2222");
            mySqlInfo.setDriver("com.mysql.jdbc.driver");
            System.out.println("test数据源被注入。。。。。。");
            return mySqlInfo;
        }
    
        @Bean
        @Profile("prod")
        public MySqlInfo mySqlInfoProd() {
            MySqlInfo mySqlInfo = new MySqlInfo();
            mySqlInfo.setUserName("wangwu");
            mySqlInfo.setPassWord("3333");
            mySqlInfo.setDriver("com.mysql.jdbc.driver");
            System.out.println("prod数据源被注入。。。。。。");
            return mySqlInfo;
        }
    
    }

    2. 测试类,假设开启生产的数据源

    /**
     * description
     *
     * @author 70KG
     * @date 2018/12/17
     */
    public class Test01 {
    
        @Test
        public void test() {
    
            // 无参构造创建容器
            AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext();
            // 读取配置文件,并属性赋值
            ac.register(MyConfig.class);
            ac.getEnvironment().setActiveProfiles("prod");
            // 刷新容器
            ac.refresh();
    
        }
    
    }

    3. 结果

    prod数据源被注入。。。。。。

    4. 说明

    @Profile不仅可以加在Bean上,还可以加在到类上,表示这个类所属的环境

    还有一种方式让环境生效,配置虚拟机参数,-Dspring.profiles.active=prod

  • 相关阅读:
    Kafka 文档用例
    Kafka 文档引言
    关于工作流核心选择
    IEEE浮点标准
    新项目的CQRS设计
    持续集成:CruiseControl.NET + VisualSVN.Server
    商城(一)
    Maven基础学习(一)—Maven入门
    Mybatis基础学习(五)—缓存
    Mybatis基础学习(四)—关系映射
  • 原文地址:https://www.cnblogs.com/zhangjianbing/p/10130501.html
Copyright © 2011-2022 走看看