- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在测试中从 application.yml 加载 influxDB 属性。
@RunWith(SpringRunner.class)
@EnableConfigurationProperties(InfluxDBProperties.class)
public class StupidRepoIntegrationTest {
@Autowired
public InfluxDBProperties properties;
@Test
public void test() {
System.out.println(stringify.apply(properties));
}
static Function<InfluxDBProperties, String> stringify = new Function<InfluxDBProperties, String>() {
@Override
public String apply(InfluxDBProperties influxDbProperties) {
StringBuilder sb = new StringBuilder("InfluxDBProperties: [");
sb.append("Url=").append(influxDbProperties.getUrl()).append(", ");
sb.append("Database=").append(influxDbProperties.getDatabase()).append(", ");
sb.append("Username=").append(influxDbProperties.getUsername()).append(", ");
sb.append("Password=").append(influxDbProperties.getPassword()).append(", ");
sb.append("RetentionPolicy=").append(influxDbProperties.getRetentionPolicy()).append(", ");
sb.append("ConnectTimeout=").append(influxDbProperties.getConnectTimeout()).append(", ");
sb.append("ReadTimeout=").append(influxDbProperties.getReadTimeout()).append(", ");
sb.append("WriteTimeout=").append(influxDbProperties.getWriteTimeout()).append(", ");
sb.append("GzipEnabled=").append(influxDbProperties.isGzip()).append("]");
return sb.toString();
}
};
}
我有 application.yml,以及 application-test.yml 和 application-integrationTest.yml,如下所示:
spring:
influxdb:
url: http://localhost:8086
username: admin
password: adminPass
database: integrationTest
retention-policy: autogen
connect-timeout: 10
read-timeout: 30
write-timeout: 10
gzip: true
执行测试时,出现以下异常:
java.lang.IllegalStateException: Failed to load ApplicationContext
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
...
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spring.influxdb-org.springframework.data.influxdb.InfluxDBProperties': Could not bind properties to InfluxDBProperties (prefix=spring.influxdb, ignoreInvalidFields=false, ignoreUnknownFields=true, ignoreNestedProperties=false); nested exception is org.springframework.validation.BindException: org.springframework.boot.bind.RelaxedDataBinder$RelaxedBeanPropertyBindingResult: 4 errors
Field error in object 'spring.influxdb' on field 'username': rejected value [null]; codes [NotEmpty.spring.influxdb.username,NotEmpty.username,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [spring.influxdb.username,username]; arguments []; default message [username]]; default message [may not be empty]
Field error in object 'spring.influxdb' on field 'url': rejected value [null]; codes [NotEmpty.spring.influxdb.url,NotEmpty.url,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [spring.influxdb.url,url]; arguments []; default message [url]]; default message [may not be empty]
Field error in object 'spring.influxdb' on field 'database': rejected value [null]; codes [NotEmpty.spring.influxdb.database,NotEmpty.database,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [spring.influxdb.database,database]; arguments []; default message [database]]; default message [may not be empty]
Field error in object 'spring.influxdb' on field 'retentionPolicy': rejected value [null]; codes [NotEmpty.spring.influxdb.retentionPolicy,NotEmpty.retentionPolicy,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [spring.influxdb.retentionPolicy,retentionPolicy]; arguments []; default message [retentionPolicy]]; default message [may not be empty]
...
... 48 common frames omitted
Caused by: org.springframework.validation.BindException: org.springframework.boot.bind.RelaxedDataBinder$RelaxedBeanPropertyBindingResult: 4 errors
Field error in object 'spring.influxdb' on field 'username': rejected value [null]; codes [NotEmpty.spring.influxdb.username,NotEmpty.username,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [spring.influxdb.username,username]; arguments []; default message [username]]; default message [may not be empty]
Field error in object 'spring.influxdb' on field 'url': rejected value [null]; codes [NotEmpty.spring.influxdb.url,NotEmpty.url,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [spring.influxdb.url,url]; arguments []; default message [url]]; default message [may not be empty]
Field error in object 'spring.influxdb' on field 'database': rejected value [null]; codes [NotEmpty.spring.influxdb.database,NotEmpty.database,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [spring.influxdb.database,database]; arguments []; default message [database]]; default message [may not be empty]
Field error in object 'spring.influxdb' on field 'retentionPolicy': rejected value [null]; codes [NotEmpty.spring.influxdb.retentionPolicy,NotEmpty.retentionPolicy,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [spring.influxdb.retentionPolicy,retentionPolicy]; arguments []; default message [retentionPolicy]]; default message [may not be empty]
at org.springframework.boot.bind.PropertiesConfigurationFactory.checkForBindingErrors(PropertiesConfigurationFactory.java:359)
at org.springframework.boot.bind.PropertiesConfigurationFactory.doBindPropertiesToTarget(PropertiesConfigurationFactory.java:276)
at org.springframework.boot.bind.PropertiesConfigurationFactory.bindPropertiesToTarget(PropertiesConfigurationFactory.java:240)
at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:329)
... 66 common frames omitted
我应该更改什么才能使 spring 在测试运行中拾取配置?
最佳答案
将@SPringBootTest添加到您的测试中,
如果你不想加载 spring 上下文,请参阅 Can I manually load @ConfigurationProperties without the Spring AppContext?
关于java - Spring @ConfigurationProperties 绑定(bind)在测试中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48265981/
我可以通过@ConfigurationProperties注释看到以下警告 使用 @ConfigurationProperties 时,建议将“spring-boot-configuration-pr
我正在尝试找到一种方法来在上下文启动之前记录我的应用程序属性(通过 @ConfigurationProperties 注入(inject)到我的 bean 中),以便我可以在初始化所有 bean 之前
我有一个 ApplicationProperties,我在我的服务中使用它。当我在测试中模拟其余模板来测试该服务时,当我将 applicationProperties.getBebusiness().
@Value 和 @ConfigurationProperties 注入(inject)有什么区别?为什么 Value 属性经过验证而 ConfigurationProperties 不经过验证? 最
我正在尝试使用 .NET 配置并了解自定义部分、元素等。 似乎实现这些自定义部分需要显式声明 getter 和 setter,通常会导致代码膨胀。 例如这里: http://msdn.microsof
有一种行为我找不到相关文档。让我们假设以下代码。它应该在控制台中显示使用 foo.bar 属性配置的内容: @SpringBootApplication @Component public class
我正在开发一个 Spring Integration/Boot 应用程序。我使用多文档 application.yml (src/main/resources/application.yml) 来设置
我有一个看起来像这样的父类(super class) public class MyProvider { private Integer id; private ProviderAcc
我想在程序中读/写(并保存)应用程序的配置文件 app.config 是这样的: ... 当我使用 ConfigurationManager.G
使用@ConfigurationProperties定义属性时,是否可以定义特定字段的前缀而不是整个类? 例如,假设我们有一个 Properties 类 @ConfigurationPropertie
如果 bean 类来自外部库(例如我自己的公共(public)库),我如何使用 @ConfigurationProperties 填充该 bean? 示例:来自公共(public)库: package
.yml 文件 cassandra: keyspaceApp:junit solr: keyspaceApp:xyz bean @Component @ConfigurationPro
Spring Boot 的 @ConfigurationProperties 是否可以拥有不可变(最终)字段?注解?下面的例子 @ConfigurationProperties(prefix = "e
我在 application.properties 文件的一个属性中有一个值列表: my-property=abc,def,ghi 然后我将它加载到我的 @ConfigurationPropertie
我有多个 .yml project: module1: mysql: urls project: module2: mysql:
如何加载配置以创建继承默认值并支持覆盖的 Shape 列表? 这是我的 application.yml 文件的样子... store: default: color: red si
以下是 spring boot 项目中 YML 文件中的条目。 application: applicationPath: "/demo" defaultFilePath: ${applica
当通过@ConfigrationProperties编写spring配置时,有没有一种方法可以连接配置的根值。 我的配置是这样的 foo.bar=hello foo.bar.baz=world 如何从
我使用 @ImportResource({"classpath:property-sources.xml"}) 注释来外部化某些配置文件的路径。 因此,在应用程序中,我可以使
我希望 Spring Boot 从 application.properties 中的条目读取我的配置,但它们未激活。我的 application.properties 包含以下条目: foo.use
我是一名优秀的程序员,十分优秀!