Spring boot lateinit属性vkUserRepository尚未初始化。为什么?

Spring boot lateinit属性vkUserRepository尚未初始化。为什么?,spring-boot,jpa,kotlin,spring-data-jpa,Spring Boot,Jpa,Kotlin,Spring Data Jpa,我尝试了“kotlin-SpringBoot2-jpa”,我刚开始学习SpringBoot。 我有模型、存储库和应用程序文件。我用start.spring.io来启动。我看过一些关于web的例子,但我不需要web 我在编译时出错了。为什么? 如何修复此错误 2018-12-21 13:26:02.732 INFO 28188 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dia

我尝试了“kotlin-SpringBoot2-jpa”,我刚开始学习SpringBoot。 我有模型、存储库和应用程序文件。我用start.spring.io来启动。我看过一些关于web的例子,但我不需要web

我在编译时出错了。为什么? 如何修复此错误

2018-12-21 13:26:02.732  INFO 28188 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL95Dialect
2018-12-21 13:26:02.923  INFO 28188 --- [           main] o.h.e.j.e.i.LobCreatorBuilderImpl        : HHH000421: Disabling contextual LOB creation as hibernate.jdbc.lob.non_contextual_creation is true
2018-12-21 13:26:02.929  INFO 28188 --- [           main] org.hibernate.type.BasicTypeRegistry     : HHH000270: Type registration [java.util.UUID] overrides previous :         org.hibernate.type.UUIDBinaryType@396ef8b2
2018-12-21 13:26:03.335  INFO 28188 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2018-12-21 13:26:04.150  INFO 28188 --- [           main] r.k.v.VkUsersSkillApplicationKt          : Started VkUsersSkillApplicationKt in 4.348 seconds (JVM running for 4.905)
Exception in thread "main" kotlin.UninitializedPropertyAccessException: lateinit property vkUserRepository has not been initialized
  at     ru.program.vkUsersSkill.VkUsersSkillApplicationKt.main(VkUsersSkillApplication.kt:17)
我的节目:

VkUser.kt

import javax.persistence.Column
import javax.persistence.Entity
import javax.persistence.Id
import javax.persistence.Table

@Entity
@Table (name = "vk_users")
data class VkUser(
    @Id
    @Column(name = "user_id")
    var userId: Long = 0L,

    @Column(name = "access_token")
    var accessToken: String = "",

    @Column(name = "alias")
    var alias: String = "",

    @Column(name = "login")
    var login: String = "",

    @Column(name = "password")
    var password: String = ""
)
VkUserRepository.kt

import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.stereotype.Repository
import ru.program.vkUsersSkill.models.VkUser

@Repository
interface VkUserRepository: JpaRepository<VkUser, Long>

我们可以创建开始类bean

@Component
class StartHere {
@Autowired
lateinit var vkUserRepository: VkUserRepository
fun runHere() {
    var users = vkUserRepository.findAll()
    println(users)
}

//TODO all other program code here
}
然后在MAIN函数中,我们获得“应用程序上下文”并运行bean启动器

import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import ru.program.vkUsersSkill.init.StartHere

@SpringBootApplication
class VkUsersSkillApplication

fun main(args: Array<String>) {
val context = runApplication<VkUsersSkillApplication>(*args)
val start = context.getBean(StartHere::class.java)
start.runHere()
}
import org.springframework.boot.autoconfigure.springboot应用程序
导入org.springframework.boot.runApplication
导入ru.program.vkuserskill.init.StartHere
@SpringBoot应用程序
VkUsersSkillApplication类
趣味主线(args:Array){
val context=runApplication(*args)
val start=context.getBean(StartHere::class.java)
start.runHere()
}
一切都完成了。
感谢@Jonathan Johx.

你能发布应用程序的属性吗?@Jonathan Johx,添加了属性文件。添加到VkUsersSkillApplication类头@EntityScan(basePackages={“run.program.xxxxx.entities”})@EnableJpaRepositories(basePackages={“ru.program.xxxxx.repositories”})。。。更改您的包respectively@Jonathan约翰,这不是工作(((错误未更改。屏幕此处您无法在应用程序类中调用某个存储库,为什么?因为您正在启动应用程序,但尚未加载应用程序,所以请删除该变量和逻辑,如果您要加载数据或从存储库获取数据,则需要在应用程序运行后实现某个类。。。
@Component
class StartHere {
@Autowired
lateinit var vkUserRepository: VkUserRepository
fun runHere() {
    var users = vkUserRepository.findAll()
    println(users)
}

//TODO all other program code here
}
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import ru.program.vkUsersSkill.init.StartHere

@SpringBootApplication
class VkUsersSkillApplication

fun main(args: Array<String>) {
val context = runApplication<VkUsersSkillApplication>(*args)
val start = context.getBean(StartHere::class.java)
start.runHere()
}