![](/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.