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); } }
  • 相关阅读:
    JS判断字符串是否为空或是否全为空格
    分页-jquery.page.js插件在使用时重复触发“上一页”和“下一页”操作
    JS IE 打开本地exe程序
    bootstrap中的模态框(modal,弹出层)
    attr()、prop()、css() 的区别
    java-ActiveMQ
    java-webSocket
    java-普通类文件@Autowired自动注入为null
    HTML5<canvas>标签:使用canvas元素在网页上绘制四分之一圆(3)
    HTML5<canvas>标签:使用canvas元素在网页上绘制渐变和图像(2)
  • 原文地址:https://www.cnblogs.com/1540340840qls/p/7942017.html
Copyright © 2011-2022 走看看