@ConfigurationProperties前缀不起作用

问题描述

看来您正在尝试使用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方法(否则将引发异常)。

我希望这会有所帮助。

解决方法

.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”不起作用

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”