Spring Boot中没有从外部化属性文件中读取自定义值

时间:2017-10-25 09:49:13

标签: java spring spring-mvc spring-boot

我有一个Spring启动应用程序, application.properties 看起来如下所示: -

server.port=5000
spring.datasource.url = jdbc:mysql:.......
spring.datasource.username = .......
spring.datasource.password = ......
spring.jpa.hibernate.ddl-auto = create-drop
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy


logging.level.org.springframework.web=INFO
logging.level.org.hibernate=ERROR
logging.path=/var/log/


controller.condition.otp = true
.........
.........

我还有一个名为 OTP 的控制器,它根据配置文件中的自定义变量controller.condition.otp的值启用或禁用,在控制器类上我给出以下条件

@ConditionalOnProperty(prefix = "controller", name = "condition.otp", havingValue = "true")
@RestController
public class OTP {
........
........
}

当文件(application.properties)驻留在资源文件夹中时,将读取自定义配置变量并且控制器正常工作。但是,当同一个文件移动到另一个位置并从那里读取时,自定义配置变量将被忽略/不读取,当我点击控制器的路径时,我得到 404 /otp/generate )。

以下是我如何从其他位置读取配置文件

@Configuration
@PropertySource("file:/.local/application.properties")
public class PropertyConfig {

    @Bean
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }
}

1 个答案:

答案 0 :(得分:1)

您需要在spring.config.location环境属性中提供外部化属性位置。

@PropertySource在这种情况下不起作用。问题记录在Jira https://jira.spring.io/browse/SPR-8539