我是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文件,我正在进行基于纯注释的开发。这里的任何输入..
答案 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"
我希望这有点帮助