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

  • 相关阅读:
    AcWing 157. 树形地铁系统 (hash判断树同构)打卡
    AcWing 156. 矩阵 (哈希二维转一维查询)打卡
    AcWing 144. 最长异或值路径 01字典树打卡
    AcWing 143. 最大异或对 01字典树打卡
    AcWing 142. 前缀统计 字典树打卡
    AcWing 139. 回文子串的最大长度 hash打卡
    AcWing 138. 兔子与兔子 hash打卡
    常用C库函数功能及用法
    编程实现C库函数
    C语言面试题5
  • 原文地址:https://www.cnblogs.com/zhangjianbing/p/10130501.html
Copyright © 2011-2022 走看看