我的application.yaml中有app.name
我希望如何使用它,我希望有一个简单的衬垫。
@Values似乎不起作用,它仅在我的restcontroller中起作用。我已经创建了一个configurationproperties和一个EnableConfigurationProperties,但是没有人会告诉我如何从这些属性中实际获取值。
class databaseHandler() {
@Value("\${app.url}")
private val url: String? = null
fun dave(){
print(url)
} ==Null
==
@Component
@ConfigurationProperties("app")
class appConfig(){
lateinit var url: String
}
@EnableConfigurationProperties(appConfig::class)
class dave(){
fun dave(){
print(appConfig().url)
} ==Lateinit url hasn't been initalized
}
答案 0 :(得分:0)
假设application.yml
具有以下属性:
app-url: www.demo-url.com
将@EnableConfigurationProperties
添加到绑定类,即
@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
class appConfig() {
lateinit var url: String
}
@EnableConfigurationProperties此批注用于在Spring应用程序中启用@ConfigurationProperties批注的bean
答案 1 :(得分:0)
解决了这个问题,您还需要初始化子类,并将其声明为spring组件,例如
@Service
class DatabaseHelper {
@Value("\${app.url}")
val url= ""
}
@RestController
@RequestMapping("/")
class GitHubController{
@Autowired
lateinit var databaseHelper : DatabaseHelper
@GetMapping("")
fun hello() = "hello $databaseHelper.url"
}