• Spring中如何获取JavaBean呢?


    转自:

    Spring中如何获取JavaBean呢?

    下文笔者讲述Spring中获取Bean的方法分享,如下所示

    我们都知道,Spring中可使用@Resource/@Autowired
    即可获取Spring对象,但是有些特殊的场景,我们只能通过另外的方式获取bean
    下文笔者将一一道来,如下所示
    

    例:
    SpringBoot获取Bean的方法

    方式1:SpringBoot 获取ApplicationContext

        @Autowired  
        ApplicationContext context; 
     

    方式2:继承ApplicationContextAware 来获取Bean

    创建一个类继承ApplicationContextAware

    package com.java265;
    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    public class ApplicationContextUtil implements ApplicationContextAware {
        private static ApplicationContext applicationContext;
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException{
            this.applicationContext = applicationContext;
        }
        public static ApplicationContext getContext() {
            return applicationContext;
        }
        public static  T getBean(String name) {
            if (applicationContext == null) {
                return null;
            }
            return (T) applicationContext.getBean(name);
        }
    }
    

    将ApplicationContextAware 配置进application-context.xml

    
    

    方式3:获取bean的使用场景

    TestBean testBean = ApplicationContextUtil.getBean("bean名称");
     

    方式4:使用ContextLoader 获取bean

    ApplicationContext app = ContextLoader.getCurrentWebApplicationContext();
    TestBean testBean = app.getBean("testBean", TestBean.class);
    

    方式5:继承 BeanFactoryAware 获取bean

    创建一个类继承BeanFactoryAware

    package com.java265;
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.beans.factory.BeanFactoryAware;
     
    public class SpringBeanFactory implements BeanFactoryAware {
        private static BeanFactory beanFactory;
        @Override
        public void setBeanFactory(BeanFactory factory) throws BeansException {
            this.beanFactory = factory;
        }
     
        /**
         * 根据beanName名字取得bean
         * @param name
         * @param 
         * @return
         */
        public static  T getBean(String name) {
            if (beanFactory == null) {
                return null;
            }
            return (T) beanFactory.getBean(name);
        }
    }
    
    SpringBeanFactory 配置进application-context.xml
    
    
    在需要的地方获取bean
    
    TestBean testBean = SpringBeanFactory.getBean("bean名称");
  • 相关阅读:
    程序人生:不积跬步无以致千里
    STL(第三课):list
    LeetCode,回溯算法
    SpringMvc 与 Lombok 碰撞导致 JSON 反序列化失败
    CSS核心知识点
    T1094 与7无关的数(信息学一本通C++)
    记录一个Cortex-M23的一个重要问题
    C++证明四方定理
    数学建模圈养湖羊的空间利用率
    【Android性能】【流畅度】概念初识
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/127547028