@ConfigurationProperties前缀不起作用

.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注解,例如

@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注释前缀keyspaceApp属性。而且您keyspaceApp

@Component

@ConfigurationProperties(prefix="cassandra")

public class CassandraClientNew {

private String keyspaceApp;

public void setKeyspaceApp(final String keyspaceApp) {

this.keyspaceApp = keyspaceApp;

}

}

顺便说一句,如果您使用ListSet且初始化了集合(例如List<String> values = new

ArrayList<>();),则仅需要getter。如果未初始化集合,则还需要提供setter方法(否则将引发异常)。

我希望这会有所帮助。

以上是 @ConfigurationProperties前缀不起作用 的全部内容, 来源链接: utcz.com/qa/436323.html

回到顶部