我是春季启动的新手并且有一个基本的错误,我显然有一个明显的错误。但我已经RTM和文档,并且错过了一点:
TL / DR
如何使用@Value注释从“弹簧环境”中获取值?
上下文
我寻求:
问题
示例调用程序
这两个都失败了:
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'
参考
提前致谢
答案 0 :(得分:1)
这对我有用:
@Value("#{environment['spring.datasource.url']}")
private String url;
答案 1 :(得分:0)
最终的答案是从基于jndi的数据库连接切换到#34; to" spring jdbc template"。然后spring-jdbc自动获取SPRING_APPLICATION_JSON设置,而没有任何额外的类'下方。
然而,在此切换之前,下面的代码已经解决了问题。这可能是一种不那么冗长的方式。
数据库连接配置类
@Configuration
@PropertySource({
"classpath:application.properties",
})
public class DbConnectionInfo
{
/**
* Db connection info
*/
@Configuration
@PropertySource({
"classpath:application.properties",
})
public class DbConnectionInfo
{
private Environment fEnvironment;
@Autowired
public DbConnectionInfo(Environment pEnvironment)
{
fEnvironment = pEnvironment;
}
public String getUrl()
{
return fEnvironment.getProperty("spring.datasource.url");
}
申请类
与此同时:
@SpringBootApplication
public class Application {
/**
* Db connection info
*/
private DbConnectionInfo fDbInfo;
/**
* Constructor. Mark as autowired so spring injects DbInfo
* @param pDbConnectionInfo
*/
@Autowired
public Application(DbConnectionInfo pDbConnectionInfo)
{
fDbInfo= pDbConnectionInfo;
}
答案 2 :(得分:0)
在 windows cmd 中,这些格式有效:
//no single quote
set SPRING_APPLICATION_JSON={"my"":{"AAAA":"test"}}
java -jar app.jar
//escape quote
java -Dspring.application.json={\"my\":{\"AAAA\":\"test\"}} -jar app.jar