首页 > 其他分享 >通过枚举获取bean

通过枚举获取bean

时间:2023-08-18 17:12:11浏览次数:37  
标签:applicationContext code String GetBeanEnum2 枚举 获取 bean public name

/**
 * @Author: szc
 * @Description: 从枚举中获得容器bean
 * @Date: 2023/3/7 19:56
 */
public enum GetBeanEnum2 {
    SERVICE_A("serviceA","服务A"){
//        private ApplicationContext applicationContext;
        @Override
        public void setBean(ApplicationContext applicationContext) {
//            this.applicationContext = applicationContext;
            this.setBeanInterface(applicationContext.getBean(ServiceA.class));
        }
    },
    SERVICE_B("serviceB","服务b"){
//        private ApplicationContext applicationContext;
        @Override
        public void setBean(ApplicationContext applicationContext) {
//            this.applicationContext = applicationContext;
            this.setBeanInterface(applicationContext.getBean(ServiceB.class));
        }
    };
    private String code;
    private String name;
    private GetBeanInterface beanInterface;



    GetBeanEnum2(String code, String name) {
        this.code = code;
        this.name = name;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public GetBeanInterface getBeanInterface() {
        return beanInterface;
    }

    public void setBeanInterface(GetBeanInterface beanInterface) {
        this.beanInterface = beanInterface;
    }

    public static GetBeanEnum2 getBeanEnum(String code){
        GetBeanEnum2[] values = GetBeanEnum2.values();
        for (GetBeanEnum2 value : values) {
            if(value.getCode().equals(code)){
                return value;
            }
        }
        return null;
    }

    //定义抽象方法
    public abstract void setBean(ApplicationContext applicationContext);

    @Component
    @Slf4j
    public static class SetEnumService{
        @Autowired
        private ApplicationContext applicationContext;

        @PostConstruct
        private void initService(){
            GetBeanEnum2[] beanEnums = GetBeanEnum2.values();
            for (GetBeanEnum2 beanEnum : beanEnums) {
               beanEnum.setBean(applicationContext);
            }
        }

    }

}

  

标签:applicationContext,code,String,GetBeanEnum2,枚举,获取,bean,public,name
From: https://www.cnblogs.com/szc1998/p/17641061.html

相关文章

  • 【快应用】如何避免通知栏提示快应用一直获取地理位置
    ​ 【关键词】地理位置、subscribe、unsubscribe 【问题背景】快应用中调用geolocation.subscribe接口获取地理位置,即使在定位完成后,会在通知栏一直显示某某快应用在获取地理位置,为了避免用户认为一直在获取他的位置,导致用户的反感,这里提供一种方式来去掉这种提示。​ ......
  • 随笔-调试-获取__libc_fatal退出原因
    https://github.com/lattera/glibc/blob/master/sysdeps/posix/libc_fatal.c:......
  • OpenCV CAP_PROP_FRAME_COUNT 获取视频帧数问题
    OpenCV读取视频,可以通过属性CAP_PROP_FRAME_COUNT获取视频的总帧数,但是有些视频通过该属性获取的帧数和实际遍历整个视频的帧数不一样。importcv2ascvvideo='video.mp4'cap=cv.VideoCapture(video)frames=cap.get(cv.CAP_PROP_FRAME_COUNT)#通过属性获取帧数......
  • 获取硬件及系统详细信息
    ///<summary>///获取硬件及系统详细信息///ManagementClass///</summary>publicstaticclassHardwareInformation{publicenumHardWareType{/*********************硬件信息*********************////<summary>///......
  • Spring高手之路12——BeanDefinitionRegistry与BeanDefinition合并解析
    1.什么是BeanDefinitionRegistry?  BeanDefinitionRegistry 是一个非常重要的接口,存在于 Spring 的 org.springframework.beans.factory.support 包中,它是 Spring 中注册和管理 BeanDefinition 的核心组件。 BeanDefinition。在 Spring 中,一个 Bean 就是一个被 Sp......
  • Node.js 获取项目根目录的几种方法
    module.filename:开发期间,该行代码所在的文件。__filename:表示当前正在执行的脚本的文件名。它将输出文件所在位置的绝对路径,且和命令行参数所指定的文件名不一定相同。如果在模块中,返回的值是模块文件的路径。始终等于module.filename。__dirname:当前执行脚本文件所在的目录......
  • xamarin.Android:获取局域网络
    通过Java.Net层,调用Java接口///<summary>///获取网络列表///</summary>privateDictionary<string,NetworkInfoBean>GetNetworkInfoList(){Dictionary<string,NetworkInfoBean>result=newDictiona......
  • 微信公众号开发获取openid和用户信息的步骤
    <?phpdefine("APPID",'wxe147d9e245s9e343');define("APP_SECRET",'eb5ba07fee64we7uc5f0533cd11a6732');header("Content-type:text/html;charset=utf-8");session_start();if(!isset($_GET['code&#......
  • 各省数字贸易指数数据计算(peek获取与next传值的使用)
    需求:工作中需要计算各省数字贸易指数数据,需要首先利用peek获取栈顶元素,然后通过n.next进行顶端元素传值,最后利用综合指数法来进行合一计算和存储,用于后续的深度数据挖掘。解决:classNode(object):definit(self,val):self.val=val#指向元素的值self.next=NoneclassSt......
  • 通过元素的 getBoundingClientRect() 方法获取元素的实际宽高与实际展示的不符合
    我的代码:通过css设置样式,当body属性v-direction=1时,设置一个高度,默认会设置一个高度.container{.video-container{height:400px;}}body[v-direction='1']{.container{.video-container{height:calc(100%-90px);}......