@ConfigurationProperties前缀不起作用

.yml文件

cassandra: keyspaceApp:junit solr: keyspaceApp:xyz 

 @Component @ConfigurationProperties(prefix="cassandra") public class CassandraClientNew { @Value("${keyspaceApp:@null}") private String keyspaceApp; 

主方法文件

 @EnableAutoConfiguration @ComponentScan @PropertySource("application.yml") public class CommonDataApplication { public static void main(String[] args) { ConfigurableApplicationContext context = new SpringApplicationBuilder(CommonDataApplication.class) .web(false).headless(true).main(CommonDataApplication.class).run(args); } } 

测试用例

 @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = CommonDataApplication.class) @IntegrationTest @EnableConfigurationProperties public class CassandraClientTest { @Autowired CassandraClientNew cassandraClientNew; @Test public void test(){ cassandraClientNew.getSession(); System.out.println(" **** done ****"); } } 

它不是将junit设置为keyspaceApp,而是设置xyz。

看起来像prefix =“cassandra”不起作用

您似乎正在尝试使用Spring Boot Typesafe配置属性function。

因此,为了使其正常工作,您必须为代码添加一些更改:

首先,您的CommonDataApplication类应该具有@EnableConfigurationProperties注释,例如

 @EnableAutoConfiguration @ComponentScan @PropertySource("application.yml") @EnableConfigurationProperties public class CommonDataApplication { public static void main(String[] args) { // ... } } 

我不认为你需要@PropertySource("application.yml")注释,因为application.yml (以及application.propertiesapplication.xml )是Spring Boot使用的默认配置文件。

您的CassandraClientNew类不需要为@Value属性添加@Value注释前缀。 而你的keyspaceApp 必须有一个setter方法

 @Component @ConfigurationProperties(prefix="cassandra") public class CassandraClientNew { private String keyspaceApp; public String setKeyspaceApp(String keyspaceApp) { this.keyspaceApp = keyspaceApp; } } 

顺便说一句,如果您使用ListSet并初始化集合(例如List values = new ArrayList<>(); ),那么只需要getter。 如果未初始化集合,则还需要提供setter方法(否则将抛出exception)。

我希望这会有所帮助。

我不知道“xyz”来自哪里(也许你没有展示整个application.yml?)。 你通常@Value@ConfigurationProperties绑定@Value (它无法知道你的前缀是什么)。 你有没有@EnableCongigurationProperties ? 您是否使用SpringApplication来创建应用程序上下文?

http://www.baeldung.com/configuration-properties-in-spring-boot

这仅适用于SB 1.5.4-RELEASE。 这很简单。 有关详细信息,请参阅上面的帖

@Configuration @ConfigurationProperties(prefix = "mail") public class ConfigProperties