我最近的目標是構建一個spring啓動應用程序,但沒有任何XML配置文件(或儘可能少),所以我想避免使用一些XML文件(即web.xml),特別是一些bean定義部分。基於Hibernate SessionFactory註解的配置
這裏來了更難的部分。
我想用@Autowired註解一個SessionFactory Bean注入類注入,但每次我嘗試啓動應用程序,我得到:
org.springframework.beans.factory.UnsatisfiedDependencyException:錯誤創建名稱爲豆「 temperatureController':通過字段'sessionFactory'表示的不滿足的依賴性;嵌套異常是org.springframework.beans.factory.BeanCreationException:使用名稱'sessionFactory'創建bean時出錯:FactoryBean在創建對象時拋出異常;嵌套的例外是java.lang.IllegalStateException:EntityManagerFactory的不能爲空
好吧,我明白,春天沒有SessionFactory的豆,因爲它沒有任何的EntityManagerFactory。
所以,我將不勝感激任何建議如何解決這個問題,但只有通過註釋配置。
到目前爲止,我讀到類似的帖子礦有關@Configuration類指定一個bean是這樣的:
@Bean
public HibernateJpaSessionFactoryBean sessionFactory() {
return new HibernateJpaSessionFactoryBean();
}
,然後加入這一行到屬性文件:
spring.jpa.properties .hibernate.current_session_context_class = org.springframework.orm.hibernate4.SpringSessionContext
最後@Autowired與SessionFactory應該運作良好。 但是,當然對我來說這是行不通的。
任何想法我應該做什麼不同/更好?
我的屬性文件是很基本的:
spring.jpa.show-SQL =真 spring.datasource.password = mysql的 spring.datasource.username = mysql的 spring.datasource.testWhileIdle =真 spring.jpa.hibernate.ddl-AUTO =更新 spring.datasource.validationQuery = SELECT 1個 spring.datasource.url = JDBC:MySQL的://本地主機:3306/SYS spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.Imp rovedNamingStrategy spring.jpa.properties.hibernate.current_session_context_class = org.springframework.orm.hibernate4。SpringSessionContext