.yml文件
cassandra: keyspaceApp:junit solr: keyspaceApp:xyz
Bean
@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。
看起来像前缀=“ cassandra”不起作用
看来您正在尝试使用Spring Boot Typesafe配置属性功能。
因此,为了使其正常工作,您必须对代码进行一些更改:
首先,您的CommonDataApplication班级应该有@EnableConfigurationProperties注解,例如
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使用的默认配置文件。
@PropertySource("application.yml")
application.yml
application.properties
application.xml
您的CassandraClientNew类不需要具有@Value注释前缀keyspaceApp属性。而且您keyspaceApp 必须有一个setter方法 。
CassandraClientNew
@Value
keyspaceApp
@Component @ConfigurationProperties(prefix="cassandra") public class CassandraClientNew { private String keyspaceApp; public void setKeyspaceApp(final String keyspaceApp) { this.keyspaceApp = keyspaceApp; } }
顺便说一句,如果您使用List或Set且初始化了集合(例如List<String> values = new ArrayList<>();),则仅需要getter。如果未初始化集合,则还需要提供setter方法(否则将引发异常)。
List
Set
List<String> values = new ArrayList<>();
我希望这会有所帮助。