簡體   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