SessionFactory XML配置有效,但Java配置不起作用.为什么



在弹簧XML配置中,我有以下内容:

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
   ....
</bean>

,在Java课中,我有 @Autowired 私有SessionFactory SessionFactory;没有设置器。这样可行。现在,我将SessionFactory更改为Java配置作为以下内容。

@Configuration
@EnableTransactionManagement
@PropertySource({ "classpath:jdbc.properties" })
public class PersistenceConfig {
    @Bean
    public SessionFactory sessionFactory() {
    LocalSessionFactoryBuilder lsfb = new LocalSessionFactoryBuilder(dataSource());
    lsfb.addAnnotatedClasses(...);
            lsfb.setProperties(hibernateProperties());
            return lsfb.buildSessionFactory();
    }
  // ...
}

我遇到了一个错误"无法自动化的字段"。添加设置器无济于事。为什么SessionFactory无法使用Java配置自动自动?

顺便说一句,我也可以通过对DAO进行Java配置来解决此问题。

我看到您的@Configuration类中没有@ComponentScan注释,因此问题可能在于您如何导入此配置。请确保所有特定的豆类都存在于相同的上下文中,或者至少是PersistenceConfig是您自动sessionFactory

的上下文中的父母。

我添加了@componentscan的注释,它无法解决问题。注释告诉Spring寻找任何@components将其配置为bean。在我看来,这个问题是,在使用@component创建bean的过程中,它找不到在我的Java配置文件中配置的bean,该文件在WebAppInitializer中启动。

最新更新