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); } }
  • 相关阅读:
    转--后台开发人员的技术栈
    hadoop +streaming 排序总结
    python 的tempfile学习
    hadoop学习日志
    shell sort 排序大讨论
    系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式
    推荐系统评测指标--准确率(Precision)和召回率(Recall)、F值(F-Measure)
    shell 数组
    leecode第七百四十六题(使用最小花费爬楼梯)
    leecode第四百七十五题(供暖器)
  • 原文地址:https://www.cnblogs.com/1540340840qls/p/7942017.html
Copyright © 2011-2022 走看看