久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    springboot應用獲取spring上下文的4種方式

     wwq圖書世界 2021-08-16

    實際開發中我們經常需要通過spring上下文獲取一些配置信息,本文闡述springboot應用獲取spring上下文的幾種方式。

    方式一:實現ApplicationContextAware接口

    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.stereotype.Component;
    
    /**
     * 實現ApplicationContextAware接口設置applicationContext
     * 提供static方法供調用者使用,不要求使用者受spring容器管理
     */
    @Component
    public class SpringContextUtil1 implements ApplicationContextAware {
    
        public static ApplicationContext applicationContext;
    
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            SpringContextUtil1.applicationContext = applicationContext;
        }
    
        public static ApplicationContext getApplicationContext() {
            return SpringContextUtil1.applicationContext;
        }
    
        public static Object getBean(String name) {
            return getApplicationContext().getBean(name);
        }
    
        public static <T> T getBean(Class<T> clazz) {
            return getApplicationContext().getBean(clazz);
        }
    
        public static <T> T getBean(String name, Class<T> clazz) {
            return getApplicationContext().getBean(name, clazz);
        }
    }

    方式二:非static方法版

    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.stereotype.Component;
    
    /**
     * 實現ApplicationContextAware接口設置applicationContext
     * 如果使用者也是被spring管理的bean則可以使用注入的方式使用,而非調用static方法
     */
    @Component
    public class SpringContextUtil2 implements ApplicationContextAware {
    
        public ApplicationContext applicationContext;
    
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            this.applicationContext = applicationContext;
        }
    
        public ApplicationContext getApplicationContext() {
            return this.applicationContext;
        }
    
        public Object getBean(String name) {
            return applicationContext.getBean(name);
        }
    
        public <T> T getBean(Class<T> clazz) {
            return applicationContext.getBean(clazz);
        }
    
        public <T> T getBean(String name, Class<T> clazz) {
            return getApplicationContext().getBean(name, clazz);
        }
    }
    
    
    @Component
    public class ContextUser{
    
        /**
         * 使用者直接注入
         */
        @Autowired
        public SpringContextUtil2 springContextUtil2;
     
    }

    方式三:在springboot引導類里設置

    import org.springframework.context.ApplicationContext;
    
    /**
     * 在springboot引導類里設置applicationContext
     * 工具類無需實現ApplicationContextAware接口
     */
    
    public class SpringContextUtil3 {
    
        public static ApplicationContext applicationContext;
    
        public static ApplicationContext getApplicationContext() {
            return SpringContextUtil3.applicationContext;
        }
    
        public static void setApplicationContext(ApplicationContext applicationContext) {
            SpringContextUtil3.applicationContext = applicationContext;
        }
    
        public static Object getBean(String name) {
            return getApplicationContext().getBean(name);
        }
    
        public static Object getBean(Class<?> requiredType) {
            return getApplicationContext().getBean(requiredType);
        }
    
        public static <T> T getBean(String name, Class<T> clazz) {
            return getApplicationContext().getBean(name, clazz);
        }
    }
    
    
    //在springboot引導類里設置applicationContext
    @SpringBootApplication
    public class MainApplication {
    
        public static void main(String[] args) {
            ConfigurableApplicationContext context = SpringApplication.run(MainApplication.class, args);
            SpringContextUtil3.setApplicationContext(context);
        }
    }

    方式四:直接注入ApplicationContext

    @Component
    public class ContextUser{
    
        /**
         * 在需要使用上下文的地方直接注入(前提:使用者受spring容器管理)
         */
       @Autowired
       public ApplicationContext applicationContext;
     
    }

    怎么樣,第四種方式是不是很easy?!

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 无码人妻品一区二区三区精99| 国产av无码专区亚洲av软件| 熟妇人妻中文字幕| 中文字幕日韩精品有码| 亚洲欧洲日产国无高清码图片| 亚洲精品成人久久久| 国产精品久久国产精麻豆99网站| 无码激情亚洲一区| 欧美日韩一区二区三区视频播放| 国产丰满美女A级毛片 | 国产精品久久久久久AV| 久久天天躁狠狠躁夜夜婷 | 国产精品国产三级国AV| 精品九九人人做人人爱| 亚洲AV旡码高清在线观看| 曰韩精品无码一区二区三区视频| 亚洲精品色无码AV试看| 丝袜人妻一区二区三区网站 | 丁香五月亚洲综合在线国内自拍| 精品无码一区在线观看| 亚洲一区成人在线视频| 一个人免费视频观看在线WWW| 亚洲V天堂V手机在线| 国产69精品久久久久777| 国产超高清麻豆精品传媒麻豆精品 | 美女裸体无遮挡免费视频网站| 国产福利萌白酱在线观看视频| 少妇被黑人到高潮喷出白浆| 韩国V欧美V亚洲V日本V| 中文字幕人妻不卡精品| 午夜无码区在线观看亚洲| 国产成人无码AV大片大片在线观看| 波多野结衣在线精品视频| 久久精品无码一区二区小草| 国产精品中文字幕观看| 精品无人区一区二区三区| 亚洲VA欧美VA国产综合| 最新亚洲人成网站在线影院| 中文有无人妻VS无码人妻激烈| 亚洲另类无码一区二区三区| 免费无码又爽又刺激高潮虎虎视频|