0

我的带有spring和hibernate的java项目,无法获取sessionFactory。当我使用它时,它一直为空。配置:

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
        <ref bean="dataSource" />
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">
                org.hibernate.dialect.Oracle9Dialect
            </prop>
        </props>
    </property>
</bean>

<bean id="test" class="test.Test">
    <property name="sessionFactory" ref="sessionFactory"></property>
</bean>`

Test.java 的主要代码是

        private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }
    public SessionFactory getSessionFacoty(){
        return this.sessionFactory;
    }
        public static void main(String[] args) {
    // TODO Auto-generated method stub
    Test test = new Test();
    System.out.println(test.sessionFactory);
}
4

2 回答 2

2

您在该main方法中的测试实际上并未使用 Spring 进行注入。您需要加载applicationContext.xml然后从中获取testbean。

所以你可以在你的主要做这样的事情:

ApplicationContext context =
new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"});

Test test = (Test)context.getBean("test");
于 2012-04-26T14:27:31.973 回答
1

您还需要从 Spring 上下文中获取 Test 对象。加载您的配置 xml 并创建上下文并从上下文中获取对象

例如。

Test test = (Test) context.getBean("test");
于 2012-04-26T14:29:12.830 回答