Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 不是托管类型:类_Spring Boot_Kotlin - Fatal编程技术网

Spring boot 不是托管类型:类

Spring boot 不是托管类型:类,spring-boot,kotlin,Spring Boot,Kotlin,我尝试将Java应用程序重构到Kotlin,它是在Spring Boot中编写的。 我已将所有文件传输到新项目,但当我运行应用程序时,总是会出现以下错误:不是托管类型:class com.contactlist.contactlistapp.model.User 我尝试了(我想)所有的答案,我在这里找到的,但没有一个能解决问题 错误消息 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating

我尝试将Java应用程序重构到Kotlin,它是在Spring Boot中编写的。 我已将所有文件传输到新项目,但当我运行应用程序时,总是会出现以下错误:不是托管类型:class com.contactlist.contactlistapp.model.User

我尝试了(我想)所有的答案,我在这里找到的,但没有一个能解决问题

错误消息

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'restApiController': Unsatisfied dependency expressed through field 'userService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userService': Unsatisfied dependency expressed through field 'userRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not a managed type: class com.contactlist.contactlistapp.model.User
联系人列表应用程序

@Import(JpaConfiguration::class)
@SpringBootApplication(scanBasePackages = ["com.contactlist.contactlistapp"])
class ContactListAppApplication

fun main(args: Array<String>)
{
    SpringApplication.run(ContactListAppApplication::class.java, *args)
}
@Configuration
@EnableJpaRepositories(basePackages =         ["com.contactlist.contactlistapp.repositories"],
    entityManagerFactoryRef = "entityManagerFactory",
    transactionManagerRef = "transactionManager")
@EnableTransactionManagement
class JpaConfiguration
{
@Autowired
private lateinit var environment: Environment

@Value("\${datasource.sampleapp.maxPoolSize:10}")
private val maxPoolSize: Int = 0

/*
 * Populate SpringBoot DataSourceProperties object directly from application.yml
 * based on prefix. Thanks to .yml, Hierarchical data is mapped out of the box with matching-name
 * properties of DataSourceProperties object].
 */
@Bean
@Primary
@ConfigurationProperties(prefix = "datasource.sampleapp")
fun dataSourceProperties(): DataSourceProperties
{
    return DataSourceProperties()
}

/*
 * Configure HikariCP pooled DataSource.
 */
@Bean
fun dataSource(): DataSource
{
    val dataSourceProperties = dataSourceProperties()
    val dataSource = DataSourceBuilder
            .create(dataSourceProperties.classLoader)
            .driverClassName(dataSourceProperties.driverClassName)
            .url(dataSourceProperties.url)
            .username(dataSourceProperties.username)
            .password(dataSourceProperties.password)
            .type(HikariDataSource::class.java)
            .build() as HikariDataSource
    dataSource.maximumPoolSize = maxPoolSize
    return dataSource
}

/*
 * Entity Manager Factory setup.
 */
@Bean
@Throws(NamingException::class)
fun entityManagerFactory(): LocalContainerEntityManagerFactoryBean
{
    val factoryBean = LocalContainerEntityManagerFactoryBean()
    factoryBean.dataSource = dataSource()
    factoryBean.setPackagesToScan(*arrayOf("com.websystique.springboot.model"))
    factoryBean.jpaVendorAdapter = jpaVendorAdapter()
    factoryBean.setJpaProperties(jpaProperties())
    return factoryBean
}

/*
 * Provider specific adapter.
 */
@Bean
fun jpaVendorAdapter(): JpaVendorAdapter
{
    return HibernateJpaVendorAdapter()
}

/*
 * Here you can specify any provider specific properties.
 */
private fun jpaProperties(): Properties
{
    val properties = Properties()
    properties["hibernate.dialect"] = environment.getRequiredProperty("datasource.sampleapp.hibernate.dialect")
    properties["hibernate.hbm2ddl.auto"] = environment.getRequiredProperty("datasource.sampleapp.hibernate.hbm2ddl.method")
    properties["hibernate.show_sql"] = environment.getRequiredProperty("datasource.sampleapp.hibernate.show_sql")
    properties["hibernate.format_sql"] = environment.getRequiredProperty("datasource.sampleapp.hibernate.format_sql")
    if (StringUtils.isNotEmpty(environment.getRequiredProperty("datasource.sampleapp.defaultSchema"))) {
        properties["hibernate.default_schema"] = environment.getRequiredProperty("datasource.sampleapp.defaultSchema")
    }
    return properties
}

@Bean
@Autowired
fun transactionManager(emf: EntityManagerFactory): PlatformTransactionManager
{
    val txManager = JpaTransactionManager()
    txManager.entityManagerFactory = emf
    return txManager
}
}
UserRepository

@Repository
interface UserRepository: JpaRepository<User, Long>
{
    fun findByName(name: String): User
}
UserServiceImpl

@Service("userService")
@Transactional
class UserServiceImpl: UserService
{
@Autowired
private val userRepository: UserRepository? = null

override fun findById(id: Long?): User
{
    return userRepository!!.findOne(id!!)
}

override fun findByName(name: String): User
{
    return userRepository!!.findByName(name)
}

override fun saveUser(user: User)
{
    userRepository!!.save(user)
}

override fun updateUser(user: User)
{
    saveUser(user)
}

override fun deleteUserById(id: Long?)
{
    userRepository?.delete(id!!)
}

override fun deleteAllUsers()
{
    userRepository!!.deleteAll()
}

override fun findAllUsers(): List<User>
{
    return userRepository!!.findAll()
}

override fun isUserExist(user: User): Boolean
{
    return findByName(user.name!!) != null
}
}

您的主要应用程序类的包是什么?用户类的包是什么?请阅读,是的,那是不见的
@Service("userService")
@Transactional
class UserServiceImpl: UserService
{
@Autowired
private val userRepository: UserRepository? = null

override fun findById(id: Long?): User
{
    return userRepository!!.findOne(id!!)
}

override fun findByName(name: String): User
{
    return userRepository!!.findByName(name)
}

override fun saveUser(user: User)
{
    userRepository!!.save(user)
}

override fun updateUser(user: User)
{
    saveUser(user)
}

override fun deleteUserById(id: Long?)
{
    userRepository?.delete(id!!)
}

override fun deleteAllUsers()
{
    userRepository!!.deleteAll()
}

override fun findAllUsers(): List<User>
{
    return userRepository!!.findAll()
}

override fun isUserExist(user: User): Boolean
{
    return findByName(user.name!!) != null
}
}
com
    +- contactlist
      +- contactlistapp
          +- ContactListAppApplication.kt
          |
          +- configuration
          |   +- JpaConfiguration.kt
          |
          +- controller
          |   +- AppController.kt
          |   +- RestApiController.kt
          |
          +- model
          |   +- User.kt
          |
          +- repositories
          |   +- UserRepository.kt
          |
          +- service
          |   +- UserService.kt
          |   +- UserServiceImpl.kt
          |
          +- util
          |   +- CustomErrorType.kt