@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.properties
和application.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; } }
顺便说一句,如果您使用List
或Set
并初始化集合(例如List
),那么只需要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