小编Adr*_*aro的帖子

使用Kotlin的Spring Boot-@Value注释无法按预期工作

我正在使用Kotlin开发Spring Boot应用程序。由于需要连接到外部API(多云),因此我决定向我的应用程序添加一个配置类,以存储(并从VCS中隐藏)我的敏感数据,例如用户名,密码或API密钥。

所以这就是我所做的:

我创建了一个Config类:

package demons

import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.PropertySource

@Configuration
@PropertySource("classpath:application.properties")
class AppConfig {
    @Value("\${test.prop}")
    val testProperty: String? = null
}
Run Code Online (Sandbox Code Playgroud)

然后我在我的application.properties文件中添加了一个test.prop条目

test.prop=TEST
Run Code Online (Sandbox Code Playgroud)

但是,在我运行的每个测试中,创建AppConfig的实例后,他的testProperty属性null不是string TEST

例如,此代码段:

val config = AppConfig()
System.out.println(config.testProperty)
Run Code Online (Sandbox Code Playgroud)

将打印出:

null
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用单独的.properties文件代替默认的.properties文件,myproperties.properties并将变量声明为lateinit var。在这最后一种情况下,变量似乎永远不会初始化:

kotlin.UninitializedPropertyAccessException: lateinit property testProperty has not been initialized
Run Code Online (Sandbox Code Playgroud)

我想念什么?

spring properties kotlin spring-boot

6
推荐指数
1
解决办法
5882
查看次数

仅在使用python3时实例化Elasticsearch客户端失败

我一直在尝试使用python的elasticsearch库连接到我的ElasticSearch主机。因此,代码如下所示:

client = Elasticsearch(
        ["https://my-machine.io:9200"],
        http_auth=("user", "password")
    )
Run Code Online (Sandbox Code Playgroud)

现在的问题是,该指令仅在我使用python 2.7解释器时有效,而在python 3.6时失败,从而产生以下错误:

File "/usr/local/lib/python3.6/site-packages/elasticsearch/client/__init__.py", line 171, in __init__
    self.transport = transport_class(_normalize_hosts(hosts), **kwargs)
  File "/usr/local/lib/python3.6/site-packages/elasticsearch/transport.py", line 108, in __init__
    self.set_connections(hosts)
  File "/usr/local/lib/python3.6/site-packages/elasticsearch/transport.py", line 163, in set_connections
    connections = list(zip(connections, hosts))
  File "/usr/local/lib/python3.6/site-packages/elasticsearch/transport.py", line 160, in _create_connection
    return self.connection_class(**kwargs)
  File "/usr/local/lib/python3.6/site-packages/elasticsearch/connection/http_urllib3.py", line 78, in __init__
    raise ImproperlyConfigured("Root certificates are missing for certificate "
elasticsearch.exceptions.ImproperlyConfigured: Root certificates are missing for certificate validation. Either pass them in using the ca_certs parameter or install certifi to …
Run Code Online (Sandbox Code Playgroud)

python python-3.x elasticsearch elasticsearch-py

0
推荐指数
1
解决办法
999
查看次数