Dany
05/23/2021, 4:13 PMseon:
uri: 123
My SeonConfiguration class:
@Configuration
@ConfigurationProperties(prefix = "seon")
data class SeonConfiguration(
var uri: String = ""
)
My main class:
@SpringBootApplication
@ConfigurationPropertiesScan
@EnableConfigurationProperties
class WadzpayServiceApplication
fun main(args: Array<String>) {
val seonConfiguration: SeonConfiguration = SeonConfiguration()
print(seonConfiguration.uri) //this line prints null
runApplication<WadzpayServiceApplication>(*args)
}
I had been looking all the possibile answers on stackoverflow, getting my head crazy but still can't make it work. Any help would be massively appreciated!ashmelev
05/23/2021, 5:55 PMrunApplication(...)
is executed. Secondarily, val seonConfiguration: SeonConfiguration = SeonConfiguration()
is simply creating a new instance of SeonConfiguration
class and not using the one Spring would eventually create - hence the null
you are seeing. Lastly, this is not a Kotlin-specific issue you are experiencing. You should spend a few more minutes with the Spring documentation/examples.Dany
05/23/2021, 6:50 PMval seonConfiguration
to the bean object instead of new object (if I understand it correctly)?marzelwidmer
05/23/2021, 7:12 PM@SpringBootApplication
@EnableConfigurationProperties(SeaonConfigurer::class)
class WadzpayServiceApplication
fun main(args: Array<String>) {
runApplication<WadzpayServiceApplication>(*args)
}
@ConstructorBinding
@ConfigurationProperties(prefix = "seon")
class SeaonConfigurer(var uri: String)
marzelwidmer
05/23/2021, 7:15 PM@Service
class SeonService(private val seaonConfigurer: SeaonConfigurer) {
fun foo() {
val bar = seaonConfigurer.host
}
}
Dany
05/23/2021, 7:27 PMval seonService = SeonService()
then AFAIK, configuration data won't be injected. As far as I understand, I need to call the BEAN object created from Spring, not initiate a new one - I am at this point and stuckmarzelwidmer
05/23/2021, 7:29 PMmarzelwidmer
05/23/2021, 7:32 PMmarzelwidmer
05/23/2021, 7:33 PMDany
05/23/2021, 7:42 PMseon:
uri: 123
Here is my SeonConfiguration.kt
@Configuration
@ConfigurationProperties(prefix = "seon")
class SeonConfiguration {
var uri: String = ""
}
Here is my SeonService.kt
@Service
class SeonService(private val seonConfiguration: SeonConfiguration) {
fun foo() {
println(seonConfiguration.uri)
}
}
Here is my main method - which I don't know how to call the method in SeonService to print out the configuration
@SpringBootApplication
@ConfigurationPropertiesScan
@EnableConfigurationProperties(SeonConfiguration::class)
class WadzpayServiceApplication
fun main(args: Array<String>) {
runApplication<WadzpayServiceApplication>(*args)
/*
What kind of magic here to make the program print 123
*/
}
marzelwidmer
05/23/2021, 7:52 PMmarzelwidmer
05/23/2021, 7:55 PMmain(args: Array<String>) {
runApplication<WadzpayServiceApplication>(*args){
addInitializers(
beans {
bean {
ApplicationRunner { println("ApplicationRunner -----------------> with some magic....") }
}
}
)
}
}
Dany
05/23/2021, 7:59 PMfoo
from SeonService
class, and foo
will somehow print the uri from configuration file, which is 123
marzelwidmer
05/23/2021, 7:59 PMDany
05/23/2021, 8:05 PMmarzelwidmer
05/23/2021, 8:07 PMkqr
05/24/2021, 6:28 AMSourabh Rawat
06/02/2021, 4:58 AM