zoukankan      html  css  js  c++  java
  • spring @Profile的运用示例

    @Profile的作用是把一些meta-data进行分类,分成Active和InActive这两种状态,然后你可以选择在active 和在Inactive这两种状态 下配置bean,

    在Inactive状态通常的注解有一个!操作符,通常写为:@Profile("!p"),这里的p是Profile的名字。

    下面demo中AppProfileConfig的bean在active状态下被IOC容器创建,而AppProfileConfig2是在Inactive状态下被IOC容器创建:

    demo的思路是:先定义两个domain类,再写两个配置类即上面提的AppProfileConfig和AppProfileConfig2这两个类,最后写一个测试类:

    示例代码如下:

    第一个domain类:Alarm类的代码如下:

    package com.timo.profile.domain;
    
    public class Alarm {
        private String name;
        private Integer alarmSeverity;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAlarmSeverity() {
            return alarmSeverity;
        }
    
        public void setAlarmSeverity(Integer alarmSeverity) {
            this.alarmSeverity = alarmSeverity;
        }
    }

    第二个domain类:ouyangfeng的代码如下:

    package com.timo.profile.domain;
    
    public class Ouyangfeng {
        private String name;
        private Integer age;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    }

    第一个配置类:AppProfileConfig的代码如下:

    package com.timo.profile;
    
    import com.timo.profile.domain.Alarm;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Profile;
    
    @Configuration
    @Profile("sixi")
    public class AppProfileConfig {
        @Bean
        public Alarm alarm(){
            Alarm alarm = new Alarm();
            alarm.setAlarmSeverity(1);
            alarm.setName("历史告警");
            return  alarm;
        }
    }

    第二个配置类AppProfileConfig2的代码如下:

    package com.timo.profile;
    
    import com.timo.profile.domain.Ouyangfeng;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Profile;
    
    @Configuration
    @Profile("!flower")
    public class AppProfileConfig2 {
        @Bean
        public Ouyangfeng ouyangfeng(){
            Ouyangfeng ouyangfeng = new Ouyangfeng();
            ouyangfeng.setAge(25);
            ouyangfeng.setName("欧阳");
            return  ouyangfeng;
        }
    }

    测试类的代码如下:

    package com.timo.profile;
    
    import com.timo.profile.domain.Alarm;
    import com.timo.profile.domain.Ouyangfeng;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    
    public class Test {
        public static void main(String[] args) {
            AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
        //激活@Profile中name为sixi的类: ctx.getEnvironment().setActiveProfiles(
    "sixi"); ctx.register(AppProfileConfig.class,AppProfileConfig2.class); ctx.refresh(); Alarm alarm = ctx.getBean(Alarm.class); Ouyangfeng ouyangfeng = ctx.getBean(Ouyangfeng.class); System.out.println("alarm="+alarm); System.out.println("ouyangfeng="+ouyangfeng); } }
  • 相关阅读:
    Linux C 使用 libmaxminddb 读取 GeoIP2 MMDB 获取 IP 的地理位置
    同时装了 Python 3 和 Python 2,怎么用 pip ?
    Linux C Socket 编程
    Shell 筛选符合条件的 ELF 文件
    Linux C 获取本机所有网卡的 IP,Mask
    【转载】VirtualBox 扩展增强包安装
    Linux 下 GCC 的使用
    Linux 基础
    MobaXterm 连接 VirtualBox 6 虚拟机中的 CentOS 7
    ruby使用ocra打包exe文件,,报错libssp-0.dll
  • 原文地址:https://www.cnblogs.com/1540340840qls/p/7942017.html
Copyright © 2011-2022 走看看