我刚开始使用spring依赖注入技术,并且正在努力学习最佳实践。我想知道,将带有@ConfigurationProperties注释的类注入服务层类(用@Service注释)是否是一个好的设计理念。我试图将application.yml中的属性映射到一个配置类,如下所示-
@ConstructorBinding
@ConfigurationProperties(prefix = "application")
class ApplicationConfig(
val kafka: someDeeplyNestedType = SomeDeeplyNestedObj()
) {
// helper functions
}然后在服务层中注入上面的配置类,如下所示-
@Service
@EnableConfigurationProperties(ApplicationConfig::class)
class RestService(val config: ApplicationConfig) {
init {
// Reference config object
// Reference application.yml properties via config object.
}
}我很想知道是否可以改进当前的实现--不确定是否可以将configuration类传递给service-layer类。我也很想知道是否有更好的方法来连接ApplicationConfig,而不需要使用EnableConfigurationProperties注释。
发布于 2021-12-28 16:57:06
它是令人愉快的,记录在案,并且可能是“无与伦比的”(仅限于:“限制” (没有SpEL ->助手函数!?;))。
要使用
@ConfigurationPropertiesbean,可以使用与任何其他bean相同的方式注入它们,如下面的示例所示: @Service公共类MyService {私有的最终SomeProperties属性;.
唯一的问题可能产生于“深度”,而不是“拥有”来自“助手函数”的(config)结构...and可能性。
但
prefix = "application"“听起来”可疑!
注意:
大部分-几乎所有 spring*引导属性已经是"typesafe",并且在spring-启动-自动配置包中有它们的对象/类表示。
请研究一下“打字章”,同时也凝视着PropertySource抽象。
发布于 2021-12-28 06:19:55
没有硬性规则,比如Spring,我们可以在类级别添加@EnableConfigurationProperties和构造型注释。
作为良好实践的一部分,EnableConfigurationProperties或任何配置都应该是配置类或主spring引导类的一部分,因此任何开发人员都可以轻松地找出这些配置,而不是进行任何特定的服务类,然后进行检查。
在您的示例中,yo可以结合@SpringBootApplication注释使用@EnableConfigurationProperties注释。
https://stackoverflow.com/questions/70501944
复制相似问题