我对springboot还不熟悉,有一个非常基本的错误,我显然有一个明显的错误。但我已经和医生联系过了,我遗漏了一点:
tl/dr公司
如何使用@value annotation从“spring环境”获取值?
上下文
我寻求:
使用环境变量spring\u application\u json将“jdbc info”(例如url/password/login)传递给应用程序/“spring environment”
在应用程序“post process context”中使用此jdbc信息为jdbc jndi设置url/creds/etc
问题
我已经设置了环境变量spring\u application\u json,但是spring boot看起来并没有“接受”
调用程序示例
这两个都失败了:
SPRING_APPLICATION_JSON='{"spring": {"datasource": { "url":"jdbc:mysql://localhost:3306/myapp", "username":"myappuser", "password":"mypassword" } } }' java -jar build/libs/myapp_springboot.war
和
-Dspring.application.json='{"spring": {"datasource": { "url":"jdbc:mysql://localhost:3306/myapp", "username":"myappuser", "password":"mypassword" } } }' java -jar build/libs/myapp_springboot.war
示例用法
下面是尝试访问的类:
@Component
public class DbInfo
{
@Value("${spring.datasource.url}")
String fUrl;
请注意,我没有任何“propertysource资料”。我最初以为我会免费得到它。
错误
无法解析字符串值“${spring.datasource.url}”中的占位符“spring.datasource.url”
我也试过这个
我试过这个:
@Configuration
@PropertySource({
"classpath:application.properties",
})
public class MyDbInfo
{
@Autowired
Environment fEnvironment;
环境
springBootVersion = '1.4.2.RELEASE'
参考
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-功能外部配置与值
提前谢谢
2条答案
按热度按时间fquxozlt1#
这对我很有用:
xxslljrj2#
最终的答案是从“基于jndi的db连接”切换到“springjdbc模板”。然后springjdbc自动获取spring应用程序的json设置,而不需要下面的任何“额外类”。
然而,在此切换之前,下面的代码解决了这个问题。可能有一种不那么冗长的方法。
db连接配置类
应用程序类
与此一起: