Spring自动装配不使用lazy-init

时间:2014-03-22 22:21:55

标签: java spring autowired sessionfactory

当我启动集成测试时,我正在尝试使用Spring自动装配我的sessionFactory bean。当我在测试中创建服务类的新实例时,我相信我需要lazy-init。对于我的生活,我不知道为什么我的sessionFactory继续为null。请帮忙!

的applicationContext.xml

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
    lazy-init="true">
    <property name="dataSource">
        <ref bean="dataSource"/>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
        </props>
    </property>
</bean>

MyServiceImpl.java

@Autowired
SessionFactory sessionFactory;

public HibernateTemplate getHibernateTemplate() {
    return new HibernateTemplate(this.sessionFactory);
}

Test.java

public void test() {
    MyServiceImpl impl = (MyServiceImpl) Class.forName("foo.package.MyServiceImpl").newInstance();
    HibernateTemplate template = impl.getHibernateTemplate();
}

测试中的“模板”变量始终为空。

1 个答案:

答案 0 :(得分:2)

您正在构建MyServiceImpl,这意味着它不是由spring管理的,因此spring不会处理您的Autowired注释。您需要从spring上下文中获取MyServiceImpl。