Spring Boot и Hibernate. Handle Session Factory
У меня проблема с Spring и Hibernate сессии. У меня есть следующий компонент в моем классе конфигурации:
@Bean
fun sessionFactory(@Autowired entityManagerFactory: EntityManagerFactory) :
SessionFactory = entityManagerFactory.unwrap(SessionFactory::class.java)
но это приводит к тому, что приложение не запускается.
The dependencies of some of the beans in the application context form a cycle:
userRepository defined in file [/home/m/Code/enterprise/out/production/classes/com/xxx/site/domain/user/repository/UserRepository.class]
┌─────┐
| getSessionFactory defined in class path resource [com/xxx/site/WebMvcConfig.class]
└─────┘
Репозиторий пользователей:
@Repository
@Qualifier("mysql")
class UserRepository(@Autowired private val sessionFactory: SessionFactory): UserRepositoryInterface{
...
}
Я использую Spring boot 2.0.0.M4.
Эта проблема не возникала для Spring Boot 1.5.4.RELEASE, хотя.
Есть идеи что делать?
РедактироватьSiteApplication.kt
package com.xxx.site
import com.xxx.site.interceptor.CustomLocaleChangeInterceptor
import nz.net.ultraq.thymeleaf.LayoutDialect
import org.hibernate.SessionFactory
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.web.servlet.LocaleResolver
import org.springframework.web.servlet.config.annotation.InterceptorRegistry
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer
import org.springframework.web.servlet.i18n.SessionLocaleResolver
import java.util.*
import javax.persistence.EntityManagerFactory
@SpringBootApplication
class SiteApplication
@Configuration
class WebMvcConfig: WebMvcConfigurer {
@Bean
fun localeResolver(): LocaleResolver {
val slr = SessionLocaleResolver()
slr.setDefaultLocale(Locale("th"))
return slr
}
override fun addInterceptors(registry: InterceptorRegistry?) {
registry!!.addInterceptor(CustomLocaleChangeInterceptor()).addPathPatterns("/**")
}
@Bean
fun layoutDialect(): LayoutDialect {
return LayoutDialect()
}
@Bean
fun sessionFactory(@Autowired entityManagerFactory: EntityManagerFactory) :
SessionFactory = entityManagerFactory.unwrap(SessionFactory::class.java)
}
fun main(args: Array<String>) {
SpringApplication.run(SiteApplication::class.java, *args)
}