Ich nehme nur ein paar Experimente mit Feder webflux 5.0.0 und Kotlin, und ich habe Probleme mit dem Laden Konfiguration von application.yml Projektwie man config in spring-webflux ohne feder-boot lädt?
Für Base I mit diesem Beispiel spring-kotlin-functional
starte Aber es gibt nur die manuelle Beladung Bohnen und Routing ohne Laden von Konfigurationsdateien oder Beispiel, wie Analog der @ConfigurationProperties-Klasse auf diese Weise implementieren.
Ich habe versuchen Umwelt in Bohnen Abschnitt zu nehmen:
data class DbConfig(
var url: String = "",
var user: String = "",
var password: String = ""
)
fun beans(): BeanDefinitionDsl = beans {
bean {
//try to load config from path=db to data class DbConfig
env.getProperty("db", DbConfig::class.java)
}
bean<DBConfiguration>()
//controllers
bean { StatsController(ref()) }
bean { UserController(ref()) }
//repository
bean { UserRepository(ref()) }
//services
bean { StatsService(ref()) }
//routes
bean { Routes(ref(), ref()) }
bean("webHandler") {
RouterFunctions.toWebHandler(ref<Routes>().router(), HandlerStrategies.builder().viewResolver(ref()).build())
}
//view resolver
bean {
val prefix = "classpath:/templates/"
val suffix = ".mustache"
val loader = MustacheResourceTemplateLoader(prefix, suffix)
MustacheViewResolver(Mustache.compiler().withLoader(loader)).apply {
setPrefix(prefix)
setSuffix(suffix)
}
}
}
aber es gibt nur Systemeigenschaften in Umwelt
Die Frage ist also, wie Konfiguration von application.yml zu laden und wie analog zu implementieren von @ConfigurationProperties in einem solchen funktionalen Stil?
Und verstehe ich richtig, dass ohne Spring-Boot alle Anmerkungen (wie @Bean, @Repository, @Transactional und andere) nicht für Bohnen funktionieren?
Meine Quellen: github
-Update 2017-10-21
eine Lösung finden. Das Problem hing damit zusammen, dass es keinen BeanPostProcessor gab. Und nachdem ich um diese zwei Prozessoren:
bean<CommonAnnotationBeanPostProcessor>()
bean<ConfigurationClassPostProcessor>()
Anmerkungen @Configuration
, @Bean
und @PostConstruct
Start zu arbeiten. Aber Anmerkung @ConfigurationProperties
existiert nur in spring-boot
Abhängigkeit und yml Parsing Klassen finde ich nur in spring-boot-starter
..
Nach Abhängigkeit einschließlich spring-boot-starter
und das Hinzufügen von bean<ConfigurationPropertiesBindingPostProcessor>()
zu Bohnen Abschnitt, Anmerkung @ConfigurationProperties
Start in Arbeit, aber Config von application.yml war auch nicht inbegriffen. Also füge ich diesen Abschnitt hinzu:
val resource = ClassPathResource("/application.yml")
val sourceLoader = YamlPropertySourceLoader()
val properties = sourceLoader.load("main config", resource, null)
environment.propertySources.addFirst(properties)
zu GenericApplicationContext
Konfiguration. Und jetzt funktionieren alle wie erwartet, aber mit einer Abhängigkeit spring-boot-starter
.
Vollcodebeispiel: version with fixes
Danke für die Antwort! Aber wie ich sehe, diese Annotationen funktioniert nicht, oder ich mache etwas falsch .. – kurt
Ich werde versuchen, Ihren Code zu ziehen, um lokal zu testen – romainbsl
Danke, aber ich fand eine Lösung :) Ich werde Frage später aktualisieren .. – kurt