在弹簧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中启动。