繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM