欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java?springboot中如何讀取配置文件的屬性

 更新時間:2022年01月23日 14:44:40   作者:灰小猿  
大家好,本篇文章主要講的是java?springboot中如何讀取配置文件的屬性,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下

我們知道在比較大型的項目的開發(fā)中,比較經(jīng)常修改的屬性我們一般都是不會在代碼里面寫死的,而是將其定義在配置文件中,之后如果修改的話,我們可以直接去配置文件中修改,那么在springboot的項目中,我們應(yīng)該如何實現(xiàn)這個呢?

接下來我們以一個實例的形式教大家如何讀取配置文件中的屬性并使用。

以yml中數(shù)據(jù)庫的配置為例,配置文件如下:

配置文件

jdbc:
  driverClassName: com.mysql.jdbc.Driver
  url: jdbc:mysql://127.0.0.1:3306/test
  username: root
  password: root

(1)使用注解@Value映射

首先第一種方法,使用@Value注解進行映射,這種方法適用于對象的參數(shù)比較少的情況,我們可以直接在對象的屬性上使用@Value注解,在其中以${}的形式傳入配置文件中對應(yīng)的屬性

同時需要在該類的上方使用@Configuration注解,將該類作為配置文件加入,在啟動項目的時候?qū)崿F(xiàn)注入。

實例如下:

@Configuration
public class JdbcProperties {
    @Value("${jdbc.driverClassName}")
    private String driverClassName;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;
}

這樣我們在使用該對象的屬性值的時候,可以直接通過調(diào)用該對象的屬性獲取。

(2)使用@ConfigurationProperties映射

第二種方法相對于第一種方法更簡單一些,不需要在每一個字段的上面的使用@Value注解,直接使用一個@ConfigurationProperties注解標注在類上即可,在其中傳入的參數(shù)為在yml配置文件上參數(shù)的前綴,但是效果是和第一種是一樣的

@ConfigurationProperties注解聲明當(dāng)前類為配置讀取類

prefix="jdbc"表示讀取前綴為jdbc的屬性

會將配置文件中前綴為prefix的屬性賦給類中同名的字段

實例如下:

@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
    private String driverClassName;
    private String url;
    private String username;
    private String password;
}

使用該注解時有一點需要注意:必須保證屬性名稱和字段一模一樣,且類需要提供字段的setter方法

但是如果只使用@ConfigurationProperties注解是沒有效果的,他并不會講配置文件中的參數(shù)和屬性匹配。他需要配合其他在啟動項目時會生效的注解一起使用才會生效

一種方法是在JdbcProperties類上添加一個@Configuration注解,將其標識為配置類

如下:

@Configuration
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
    private String driverClassName;
    private String url;
    private String username;
    private String password;
}

或者還有第二種方法:我們還可以在Spring中使用這個配置讀取類,通過@EnableConfigurationProperties注解可以將指定的配置讀取類的對象加載到Spring容器,也就是說,在其他配置類上使用一個@EnableConfigurationProperties注解,來將配置文件的參數(shù)和JdbcProperties類的屬性綁定。這樣就不需要在JdbcProperties類上使用@Configuration注解了

實例如下:

@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {
    @Autowired
    private JdbcProperties prop;

    /**
    這種方式不需要@Autowired注入字段,也不需要構(gòu)造函數(shù)注入,
    直接在方法中定義配置讀取類的形參,Springboot在創(chuàng)建DataSource對象時會自動注入JdbcProperties對象
    */
    @Bean
    public DataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(prop.getDriverClassName());
        dataSource.setUrl(prop.getUrl());
        dataSource.setUsername(prop.getUsername());
        dataSource.setPassword(prop.getPassword());
        return dataSource;
    }
}

(3)推薦使用:極簡方式 @Bean和@ConfigurationProperties注解一起使用,

對于我個人的習(xí)慣而言,在使用的時候,我還是喜歡使用第三種方法,這種方法使用起來最簡單,而且也最實用

在一個帶@Configuration注解的配置類中,我們可以直接把@ConfigurationProperties(prefix = “jdbc”)注解聲明在需要使用的@Bean的方法上,Springboot會自動將配置文件中以prefix開頭的屬性賦給要創(chuàng)建對象的類的同名字段上,使用前提:要求類該類必須提供了setter方法

使用這種方法的好處就是不要在bean上做任何額外的注解聲明。統(tǒng)一將需要進行注入容易或和配置文件參數(shù)進行綁定的類放置在一個帶@Configuration注解的類中即可!

@Configuration
public class JdbcConfig {
    @Bean
    @ConfigurationProperties(prefix = "jdbc")
    public JdbcProperties jdbcProperties(){
        return new JdbcProperties();
    }
}

但是以上的操作,只是將bean注入到了容器中,那么在其他類中使用的話,還是需要在每一個對象上使用@Autowired注解,那么有沒有什么方法可以不使用@Autowired注解來聲明自動注入呢?

@RequiredArgsConstructor注解實現(xiàn)自動注入

使用@RequiredArgsConstructor注解可以代替@autowired注解實現(xiàn)對象屬性的自動注入,

使用場景:需要注入很多的mapper接口或者另外的service接口,這時候就會寫很多的@Autowired注解,代碼看起來很亂,lombok提供了一個注解:

@RequiredArgsConstructor(onConstructor =@_(@Autowired))

寫在類上可以代替@Autowired注解,需要注意的是在注入時需要用final定義,或者使用@notnull注解

@RestController
@RequiredArgsConstructor
public class LoginTest {

//    @Autowired
    private final LoginProperties loginProperties;

    @RequestMapping("/login01")
    public void loginTest01(){
        System.out.println("進入loginTest01方法~~~");
        String language = loginProperties.getLanguage();
        System.out.println(language);
    }

}

這樣就可以避免寫入重復(fù)的@Autowired了,但是就是需要注意對象必須是final修飾的才行

總結(jié)

如果需要將類屬性與配置文件中的參數(shù)綁定,并且注入到容器中時,推薦使用第三種方法和@RequiredArgsConstructor注解來實現(xiàn)?。?!

到此這篇關(guān)于java springboot中如何讀取配置文件的屬性的文章就介紹到這了,更多相關(guān)java springboot讀取文件屬性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SSH框架網(wǎng)上商城項目第2戰(zhàn)之基本增刪查改、Service和Action的抽取

    SSH框架網(wǎng)上商城項目第2戰(zhàn)之基本增刪查改、Service和Action的抽取

    SSH框架網(wǎng)上商城項目第2戰(zhàn)之基本增刪查改、Service和Action的抽取,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Java對象的復(fù)制三種方式(小結(jié))

    Java對象的復(fù)制三種方式(小結(jié))

    這篇文章主要介紹了Java對象的復(fù)制三種方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Java動態(tài)代理靜態(tài)代理實例分析

    Java動態(tài)代理靜態(tài)代理實例分析

    這篇文章主要介紹了Java動態(tài)代理靜態(tài)代理實例分析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • springboot與數(shù)據(jù)庫返回數(shù)據(jù)中文亂碼

    springboot與數(shù)據(jù)庫返回數(shù)據(jù)中文亂碼

    大家好,本篇文章主要講的是springboot與數(shù)據(jù)庫返回數(shù)據(jù)中文亂碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • 使用log4j2打印mybatis的sql執(zhí)行日志方式

    使用log4j2打印mybatis的sql執(zhí)行日志方式

    這篇文章主要介紹了使用log4j2打印mybatis的sql執(zhí)行日志方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 在Spring中基于Java類進行配置的完整步驟

    在Spring中基于Java類進行配置的完整步驟

    基于Java配置選項,可以編寫大多數(shù)的Spring不用配置XML,下面這篇文章主要給大家介紹了關(guān)于在Spring中基于Java類進行配置的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • Java工廠模式用法之如何動態(tài)選擇對象詳解

    Java工廠模式用法之如何動態(tài)選擇對象詳解

    工廠設(shè)計模式可能是最常用的設(shè)計模式之一,我想大家在自己的項目中都用到過。本文不僅僅是關(guān)于工廠模式的基本知識,更是討論如何在運行時動態(tài)選擇不同的方法進行執(zhí)行,你們可以看看是不是和你們項目中用的一樣
    2023-03-03
  • Jsoup解析HTML實例及文檔方法詳解

    Jsoup解析HTML實例及文檔方法詳解

    這篇文章主要介紹了Jsoup如何解析一個HTML文檔、從文件加載文檔、從URL加載Document等方法,對Jsoup常用方法做了詳細講解,最近提供了一個示例供大家參考 使用DOM方法來遍歷一個文檔 從元素抽取屬性,文本和HTML 獲取所有鏈接
    2013-11-11
  • springboot整合持久層的方法實現(xiàn)

    springboot整合持久層的方法實現(xiàn)

    本文主要介紹了springboot整合持久層的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 全面解析Java中的HashMap類

    全面解析Java中的HashMap類

    HashMap類為Java提供了鍵值對應(yīng)的map類型,本文將從源碼角度全面解析Java中的HashMap類,同時包括其各種常用操作方法等,歡迎參考與借鑒
    2016-05-05

最新評論