我尝试在bean部分中使用环境:
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)
}
}
}
但环境中只有系统属性
所以问题是如何从application.yml加载配置,以及如何以这样的函数式实现@ConfigurationProperties的模拟?
bean<CommonAnnotationBeanPostProcessor>()
bean<ConfigurationClassPostProcessor>()
注释@configuration
、@bean
和@postconstruct
开始工作。但是注释@configurationproperties
仅存在于spring-boot
依赖项中,而yml解析类仅存在于spring-boot-starter
中。
在包含依赖项spring-boot-starter
并将bean
添加到beans部分之后,注释@configurationproperties
开始工作,但也未包含来自application.yml的配置。所以我增加了这一节:
val resource = ClassPathResource("/application.yml")
val sourceLoader = YamlPropertySourceLoader()
val properties = sourceLoader.load("main config", resource, null)
environment.propertySources.addFirst(properties)
到GenericApplicationContext
配置。现在,所有的工作都如我所期望的,但是包含了一个依赖项spring-boot-starter
。
完整代码示例:带有修补程序的版本
Spring boot只是一个依赖项管理,它构建了可以覆盖的自动配置。所有的功能都是从Spring框架和模块中继承的。所以基本上不管有没有boot都可以这样做。
我还没上webflux。但是当您引用其他bean时,您需要在其他地方声明一个配置bean。
我肯定我会帮你的...
问题内容: 我正在尝试设置spring xml配置,而不必创建进一步的。但是,即使我将数据库属性包括在 spring.xml: 我在这里想念什么? 问题答案: 在entityManagerFactory bean定义中指定“ packagesToScan”和“ persistenceUnitName”属性。 请注意,这适用于Spring版本> 3.1
我正在尝试在运行时重新加载应用程序的配置。配置位于yaml文件中,与ConfigurationProperties的绑定按预期工作。接下来就是。我想在yaml更改后重新加载配置。或者更确切地说,我正在使用预定的检查文件是否已更改。 我希望避免运行第二台服务器来更新我的环境。我有两个问题: 如何更新环境,也许? 我如何传播这些? Spring云配置文档说明: 只要您能够实际更改环境并发布事件,Env
我正在尝试设置SpringXML配置,而不必创建进一步的。但是我经常遇到以下异常,即使我在 spring.xml: 我错过了什么?
我有一个现有的spring 4项目(mvc、jdbc等),我试图将其移植到spring boot,但我做不到(许多依赖项存在问题,没有人能解释我是如何做到这一点的)。但现在我只想在现有项目中使用Spring数据JPA。这是pom的一个主要依赖项: 我使用EntityManagerFactorybean(在所有示例中都使用)完成了现有配置。数据库配置: 用于测试的Derby数据库。但主要数据库类型是
我正在尝试使用Poc为我们的项目创建一个侦探应用程序,以便使用Spring mvc(即没有Spring Boot)进行日志记录。我无法在网络上找到我的mvc文档/材料。 那么,如何创建Tracer、spanbean并注入记录器以进行日志记录呢?
我使用创建了一个应用程序构建文件。这将用和文件填充文件夹。 我在internet上进行了搜索,发现可以使用运行这些文件。不幸的是,这会产生以下错误输出: org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.boot.autocigure.orm.jpa.hibernatejpaAutoCo