我遇到了一个问题,我找不到任何好的解决办法。一些上下文:我们使用几个微服务,其中大多数使用rest客户端。我们发现,他们中的许多人将使用类似的配置来解决类似的问题(即弹性)。当然,我们希望将常见的、大量重复的非业务代码提取到库中。但问题是:如何在库中提取@constructor或binding
@ConfigurationProperties
数据类(特别是在使用库的代码库中可能存在这些类的多个实例的情况下)?
下面是一些示例代码:
@ConstructorBinding
@ConfigurationProperties(prefix = "rest.client")
data class MyDuplicatedRestClientProperties(
val host: String,
val someOtherField: Int,
val someFieldWithDefaultValue: String = "default value"
)
我想将其导入到一个项目中,以配置2个不同的REST客户端。我试过:
ClientProperties
将扩展。遗憾的是,我需要公开父类的所有字段,这实际上无助于复制:abstract class MyAbstractClient(
val host: String,
val someOtherField: Int,
val someFieldWithDefaultValue: String = "default value"
)
@ConstructorBinding
@ConfigurationProperties(prefix = "rest.client")
class MyImplematationClient(
val host: String,
val someOtherField: Int,
val someFieldWithDefaultValue: String = "default value"
): MyAbstractClient(
host,
someOtherField,
someFieldWithDefaultValue
)
@ConfigurationProperties
将属性实例化为@Bean
方法,但这也不太好,因为它迫使我将带有@Value
的字段放在@Configuration
类中:@Configuration
class MyConfigurationClass {
@Value("${my.client.host}")
lateinit var host: String
@Value("${my.client.someOtherField}")
lateinit var someOtherField: Int
@Value("${my.client.someFieldWithDefaultValue:default value}")
lateinit var someFieldWithDefaultValue: String
@Bean
@ConfigurationProperties
fun myClient() = MyDuplicatedRestClientProperties(
host,
someOtherField,
someFieldWithDefaultValue
)
}
根据我的经验,你走错了路。为什么?
我需要把我们的application.yml配置转移到哈希公司的领事那里。我已经创建了一个简单的Spring Boot应用程序来完成所需的更改。它将配置数据从application.yml加载到强类型类。 但是,在对应用程序进行注释之后。yml文件和引导中的启用领事。yml文件,当我尝试访问Concur KV中的相同配置时,配置数据总是空的,Concur KV在我的系统上作为Docker映像运行。
我想使用Kotlin读取yaml配置文件,下面是我的代码: 类以使用配置: 看起来,如果yaml文件有array/list,Kotlin无法正确读取它,但它在没有array的情况下工作。 我有完全相同的代码,为Java工作。我的静态编程语言代码有问题吗?
有人能解释一下下面的代码是如何毫无例外地工作的吗。我在想,当为星期天创建新实例时,它也会为星期一(星期天内)创建一个新实例,然后再为星期天(星期一内)创建一个新实例,以此类推。。。类似递归的东西,因为它们都是课程周的一部分。但我的理解是错误的,因为下面的代码运行良好。 我有这个疑问,当我读到java枚举。
问题内容: 大多数人似乎建议在不同的端口(6379和6380)上运行单独的Redis实例。为什么在创建第二个数据库时更通常建议这样做?我还没有完全阅读文档,但是大多数示例在连接时并未真正提及“选择Redis数据库”。Ruby客户端的一个示例,nrk / predis的自述文件: 目前,我们正在使用Campfire在办公室中运行Hubot,而我正在为GTalk工作第二个,因为每个Hubot实例只能使
问题内容: 我想在 多个线程* (每个CPU内核一个)中使用 scipy.integrate.ode (或scipy.integrate.odeint)实例,以便一次解决多个IVP。但是文档中说:“此集成器不可重入。您不能同时使用“vode”集成器拥有两个ode实例。 ” * __ (尽管文档未说明,但如果多次实例化,odeint也会导致内部错误。) 知道该怎么办吗? 问题答案: 一种选择是使用(
当我试图创建多个实例时,我遇到了一个问题。 例如: 控制台日志:,仅此而已。不再有了。