• 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名称");
  • 相关阅读:
    CSS 定位布局
    记录一次对某网站的sql注入
    优化程序性能
    近红外荧光ICG-whey protein 吲哚菁绿标记乳清蛋白
    nginx安装(离线安装,新增--with-http_ssl_module、--with-stream模块,离线升级)
    “顽固”——C语言用栈实现队列
    asp.net core 生命周期
    关于 HTTPS 和 SSL
    Java项目:springBoot+Mysql实现的校园二手在线交易平台系统
    终于可以彻底告别手写正则表达式了
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/127547028