![](/img/trans.png)
[英]How to access a value defined in the application.properties file in Spring Boot
[英]How to access properties @value using spring boot
我想使用@Value
閱讀 application.properties 。
app.properties
JDBC_DRIVER =com.mysql.cj.jdbc.Driver
DB_URL =jdbc:mysql://127.0.0.1:3306/vetobooks?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
USER =root
PASS =a
主要的
package com.example.java_spring_java_example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class main {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(main.class, args);
context.getBean(JDBCMysql.class);
}
}
JDBCMysql
package com.example.java_spring_java_example;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class JDBCMysql {
@Value("${JDBC_DRIVER}")
public String JDBC_DRIVE;
@Value("${USER}")
public String USER;
@Value("${PASS}")
public String PASS;
@Value("${DB_URL}")
public String DB_URL;
public void loadValue() {
System.out.println(DB_URL+"-"+ USER+"-"+ PASS+"...");
}
}
結果我得到了 null-null-null。 我怎樣才能得到真正的價值?
您不能像以前那樣靜態訪問 spring bean。 請在 main 方法中訪問 bean,如下所示。 並且 JDBCMysql 類中的 make 方法是非靜態的。
ConfigurableApplicationContext context = SpringApplication.run(main.class, args);
JDBCMysql jdbcmysql = context.getBean(JDBCMysql.class);
jdbcmysql.loadValue();
此外,我看到每個屬性都有空間。 刪除空間,它應該可以工作。
JDBC_DRIVER=com.mysql.cj.jdbc.Driver
DB_URL=jdbc:mysql://127.0.0.1:3306/vetobooks?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
USER=root
PASS=a
我認為這里的問題是您使用的是 static 關鍵字..您可以這樣做,但您必須擁有非靜態設置器..
即試試這個吧..
public static String USER;
@Value("${USER}")
public void setUSER(String user) {
.....
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.