在application.properties中传递环境值

时间:2014-06-23 19:13:27

标签: spring-boot

我是spring-boot的新手,并尝试将Backend凭据作为环境值传递到我的application.properties中。

在Tomcat中设置环境值并创建setenv.bat和setenv.sh 位置:\ apache-tomcat-7.0.53-windows-x64 \ apache-tomcat-7.0.53 \ bin

set username="ABC"
set password="xyz"

这些环境值已设置,我也可以使用

打印它
@Autowired
private Environment env;

String userName = env.getProperty("username");
String pwd = env.getProperty("password");

并尝试在application.properties中访问这些值,如

spring.datasource.username=${username}
spring.datasource.password=${password}

但这不起作用。 我尝试了不同的方式,并在setEnv.bat中提到了环境变量名称,如

set spring.datasource.username="ABC"
set spring.datasource.password="xyz"

我希望Spring Boot会从Env读取这些值并将其传递给数据源,这样我就不必在application.properties中明确提及但这也无效。请注意,我没有任何bean.xml文件,我正在进行基于纯注释的开发。这里的任何输入..

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么你想访问application.properties文件中写的变量

这可以通过多种方式完成,但一种简单的方法是在.java文件中执行以下操作:

@PropertySource("classpath:application.properties")
class AppConfig {

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

@Test
public void test_fetch_property() {

    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
    context.registerShutdownHook();
    Environment environment = context.getBean(Environment.class);
    String strWhoami = environment.getProperty("whoami.name").toString();
    assertThat(strWhoami,equalTo("\"John Doe\""));
}

whoami.name是从application.properties文件中获取并经过测试的属性

application.properties文件:

#----------------------------------------------------------
# Show your self
#----------------------------------------------------------
whoami.name="John Doe"

我希望这有点帮助