java继承spring autowired属性为null

时间:2015-10-12 14:46:38

标签: java spring inheritance

编辑:我的问题不是关于为什么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

1 个答案:

答案 0 :(得分:0)

如果您正在接受NPE,因为sessionFactory未被注入,而是您无法访问sessionFactory属性。

如果在加载应用程序上下文后可以获得sessionFactory的实例,那么这个bean是正确配置的。

所以我相信你的问题必须与自动连接的注释配置相关。您的应用程序上下文中是否有<context:annotation-config />?或者您是否在应用程序上下文中定义了类org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor的bean?   - 你的bean是xml节点吗