簡體   English   中英

為什么我無法在 Spring Boot 中使用 application.properties 文件中的屬性?

[英]Why I fail to use properties from application.properties file in Spring Boot?

為什么我無法在PostDao類中使用application.properties中的數據? 未注入的屬性和 DATABASE_URL 和其他變量為null
PostDao.java是我嘗試使用屬性的類 (src.main.java.site.model.PostDao)。

@Component
public class PostDao
{
    @Value("${url}") public static String DATABASE_URL;
    @Value("${user}") public static String USER;
    @Value("${password}") public static String PASSWORD;
}

這是我的application.peoprerties文件,它位於資源目​​錄中

url=jdbc:postgresql://localhost:5432/news
user=postgres
password=123

這是我的配置文件(src.main.java.site.NewsSiteApplication)

@SpringBootApplication
public class NewsSiteApplication
{
    public static void main(String[] args)
    {
        SpringApplication.run(NewsSiteApplication.class, args);
    }
}

您不能注入靜態變量。 為此,您需要一個 Spring 管理的 Bean。 請嘗試以下操作:

@Component
public class PostDao {
    @Value("${url}") public String databaseUrl;
    @Value("${user}") public String user;
    @Value("${password}") public String password;
}

正如@Turing85 所指出的(感謝提示;)),只應在UPPER_SNAKE_CASE寫入UPPER_SNAKE_CASE ,因此我更改了變量名稱。

或者,您可以執行以下操作,setter 方法將處理注入:

@Component
public class PostDao
{
    public static String DATABASE_URL;


    @Value("${url}")
    public void setUrlStatic(String name){
        PostDao.DATABASE_URL = name;
    }

    // And others..
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM