qq_30212947
豆根β
采纳率100%
2018-04-15 13:53 阅读 2.1k
已采纳

spring 手动获取bean对象问题。

5

通过继承ApplicationContextAware的方式获取到了bean。
但是这个bean中注入的其他bean或new的对象都为空,代理之后拿不到吗?
为什么?怎么才能获取到呢?
图片说明
图片说明
图片说明
图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    caozhy 从今以后生命中的每一秒都属于我爱的人 2018-04-15 15:42
    点赞 1 评论 复制链接分享
  • qq_27130997 安小然然 2018-04-18 00:38

    给点浅薄的建议,如果想通过名称获取IOC一个实例。Spring 2.5提供了一个org.springframework.beans.factory.BeanNameAware这个接口。你可以实现这个接口。来实现通过Byname获取bean

    点赞 评论 复制链接分享
  • u010430495 speedyao 2018-04-24 10:00

    你是使用错了,继承ApplicationContextAware后的工具类,在使用的时候不要再次注入了。
    参考这个工具类
    @Component
    public class SpringUtil implements ApplicationContextAware{
    private static ApplicationContext applicationContext;
    @Override
    public void setApplicationContext(ApplicationContext arg) throws BeansException {
    applicationContext=arg;
    }

    /**
     * 根据beanId获取实体对象
     * @param beanId
     * @param clazz
     * @param <T>
     * @return
     */
    public  static<T> T getBean(String beanId, Class<T> clazz){
        T bean = applicationContext.getBean(beanId, clazz);
        return bean;
    }
    /**
     * 根据类型获取实体对象
     * @param clazz
     * @param <T>
     * @return
     */
    public  static<T> T getBean(Class<T> clazz){
        T bean = applicationContext.getBean( clazz);
        return bean;
    }
    

    }

    使用的时候直接SpringUtil.getBean(class)就行了

    点赞 评论 复制链接分享

相关推荐