Haies
2015-11-20 08:25
采纳率: 50%
浏览 4.3k
已采纳

通过类反射调用的类中,通过Spring @Autowired 装载失败

使用了@Autowired注释,自动装配成员变量,正常情况下没有问题,但是当这个类通过java的反射机制调用时,自动装配失败,成员变量时空值,出现空指针异常。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • Haies 2015-12-02 01:18
    已采纳

    已经解决了,不过觉得破坏了框架,可能真的没法办法吧,现在贴出来我自己解决的办法

        //手动注入,防止反射无法注入
        private void ManulInject(){
            ApplicationContext apx=new ClassPathXmlApplicationContext("../applicationContext.xml");
            this.typeDao=(JdbcDao) apx.getBean("jdbcDao");
        }
    
    点赞 打赏 评论
  • 毕小宝 2015-11-27 09:04

    自动装配是在spring环境下当使用该类的实例时由spring容器完成了类的实例化过程,当然包括对依赖对象的实例化过程。
    而通过反射创建实例时,是根据你调用的构造函数完成的实例化过程,没有容器的自动化创建实例了,所以需要自己对依赖对象进行注入。
    所以依赖spring容器实例化和自己用反射实例化是两种独立的方式,不能相互渗透的。

    点赞 打赏 评论

相关推荐 更多相似问题