[java Spring] 通过反射调用的类中使用Spring@Autowired自动装配的成员变量为空?

不知题目说清楚没,就是SpringMVC中,使用了@Autowired注释,自动装配成员变量,正常情况下没有问题,但是当这个类通过java的反射机制调用时,自动装配失败,成员变量时空值,出现空指针异常。有没有大神知道原因或者解决办法? 已经困扰我很久了,多谢多谢!

阅读 14k
4 个回答

之前遇到一个问题是这样的,我们有一个类使用了自定义注解@ScheduleClass,

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface ScheduleClass {
}

然后按理说使用ApplicationContextManager.getBeansWithAnnotation(ScheduleClass.class);就能拿到这个类的Class对象,然后做后续的操作。但是后来加入了一个AOP,发现ApplicationContextManager.getBeansWithAnnotation(ScheduleClass.class);取不到对应的class对象,去掉AOP就OK了,猜想应该是使用反射之后,注解会失效。我想跟你遇到的情况差不多吧。后来我们直接用哪个类.class获取它的class对象。对你这种情况,等高手解决

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题