Java 如何使用spring boot访问属性@value

Java 如何使用spring boot访问属性@value,java,spring-boot,Java,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 =

我想使用
@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
主要

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+"...");
    }
       }

我得到的结果是空的。如何获得真实值?

您不能像以前那样静态访问Springbean。请在main方法中访问bean,如下所示。并使JDBCMysql类中的方法非静态

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关键字。。可以这样做,但必须使用非静态设置器

i、 试试这个

public static String USER;
    
    @Value("${USER}")
    public void setUSER(String user) {
        .....
    }

这回答了你的问题吗?1.使用spring管理的isntance 2
@Value
静态
字段不起作用。不,我以前读过:),我必须修改我的代码什么?我在主类中添加了此代码,但什么都没有发生你删除了静态表单loadValue方法了吗?当然,020-10-19 15:35:46.140信息2508-[main]c.example.java_spring_java_example.main:在0.703秒内启动main(JVM运行1.466)之后什么都没有,您还必须调用该方法来打印值:)
public static String USER;
    
    @Value("${USER}")
    public void setUSER(String user) {
        .....
    }