编辑:我的问题不是关于为什么Spring bean为null,而是关于为什么继承的bean为null?建议的答案解释了为什么新的操作员不能使用自动装配。但我的问题是关于继承。 我有两个班:
@Transactional
public class A {
@Autowired
protected SessionFactory sessionFactory;
//other methods
}
public class B extends A {
Session session = sessionFactory.getCurrentSession();
//other methods
}
在 Main.java 中我得到 NPE - B级无法访问属性A(((我不明白为什么((
A inst1 = new B(); - dont have access to body of B.
B inst2 = new B(); - inside class B sessionFactory is null(((
我做错了什么?我需要访问B的主体,以及上级的属性。 Bean sessionFactory正在运行:
ApplicationContext context = new ClassPathXmlApplicationContext("application-context.xml");
SessionFactory sessionfactory = (SessionFactory) context.getBean("sessionFactory");
Session session = sessionfactory.getCurrentSession();//works
答案 0 :(得分:0)
如果您正在接受NPE,因为sessionFactory
未被注入,而是您无法访问sessionFactory
属性。
如果在加载应用程序上下文后可以获得sessionFactory
的实例,那么这个bean是正确配置的。
所以我相信你的问题必须与自动连接的注释配置相关。您的应用程序上下文中是否有<context:annotation-config />
?或者您是否在应用程序上下文中定义了类org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor
的bean?
- 你的bean是xml节点吗