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

SpringBoot屬性注入的多種方式實例

 更新時間:2021年10月30日 08:47:38   作者:NicholasGUB  
在 SpringBoot中,提供了一種新的屬性注入方式,支持各種java基本數據類型及復雜類型的注入,下面這篇文章主要給大家介紹了關于SpringBoot屬性注入的多種方式,需要的朋友可以參考下

一、@Value注解注入屬性

SpringBoot默認可以將application.properties文件或application.yml文件中定義的屬性值注入到java類中,這種注入實際上是通過java類屬性的setter方法進行的。

例:將application.yml中的以下屬性注入到類中:

## 自定義屬性
petshop:
  name: 睿芽寵物
  introduce: 種類齊全,安全可靠
  licences: 1、上市許可證,2、疫苗許可證
  infos: "{'phone':'36xx102','address':'xx省xx市'}"

使用@Value注解可以將application.yml中的屬性注入,@Value注解使用${屬性名}的方式來聲明要注入的屬性,如果要注入的屬性為Map集合,則需要結合Spel表達式進行處理。

package com.it.action;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/source")
public class SourceAction {
    @Value("${petshop.name}")
    private String name;
    @Value("${petshop.introduce}")
    private String introduce;
    @Value("${petshop.licences}")
    private List<String> licences;
    @Value("#{${petshop.infos}}")
    private Map<String, String> infos;

    @RequestMapping("/show")
    public Object show() {
        Map<String, Object> map = new LinkedHashMap();
        map.put("name", name);
        map.put("introduce", introduce);
        map.put("licences", licences);
        map.put("infos", infos);
        return map;
    }
}

訪問http://localhost:8080/source/show觀察被注入的屬性:

二、@ConfigurationProperties注解批量注入屬性

@ConfigurationProperties注解用于注入有著相同前綴的屬性,注入的方式也是通過java類的setter方法來完成,但是這種方式缺少了@Value注解的靈活性,也無法結合spel語言進行處理。

例:將application.yml中的以下屬性注入到類中:

## 自定義屬性
petshop:
  name: 睿芽寵物
  introduce: 種類齊全,安全可靠
  licences: 上市許可證,疫苗許可證
  infos:
    - phone: 36xx102
    - address: xx省xx市

新建PetShop類并注入屬性:

package com.it.vo;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

@Data
@Component
@ConfigurationProperties(prefix = "petshop")
public class PetShop {
    private String name;
    private String introduce;
    private List<String> licences;
    private Map<String, String> infos;
}

測試注入的結果:

package com.it.action;

import com.it.vo.PetShop;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/source")
public class SourceAction {
    @Autowired
    private PetShop petShop;

    @RequestMapping("/show")
    public Object show() {
        return petShop;
    }
}

三、注入實體對象

使用@ConfigurationProperties注解可以將關聯的對象一同注入。

修改application.yml文件:

## 自定義屬性
petshop:
  name: 睿芽寵物
  introduce: 種類齊全,安全可靠
  shopInfo:
    phone: 36xx102
    address: xx省xx市
    licences: 上市許可證,疫苗許可證
  pets:
    - pet:
      name: 金毛
      price: 3365.21
    - pet:
      name: 巴哥
      price: 2136.10

新建三個java類,并設置好引用關系:

@Data
public class PetShopInfo {
    private String phone;
    private String address;
    private List<String> licences;
}
@Data
public class Pet {
    private String name;
    private double price;
}
@Data
@Component
@ConfigurationProperties(prefix = "petshop")
public class PetShop {
    private String name;
    private String introduce;
    private PetShopInfo shopInfo;
    private List<Pet> pets;
}

測試注入結果:

@RestController
@RequestMapping("/source")
public class SourceAction {
    @Autowired
    private PetShop petShop;

    @RequestMapping("/show")
    public Object show() {
        return petShop;
    }
}

四、自定義文件注入

在resource目錄下新建petshop/petshop.properties文件,將application.yml中的屬性轉換為properties中的key-value格式:

## 自定義屬性
petshop.name=睿芽寵物
petshop.introduce=種類齊全,安全可靠

petshop.shopInfo.phone=36xx102
petshop.shopInfo.address=xx省xx市
petshop.shopInfo.licences=上市許可證,疫苗許可證

petshop.pets[0].name=金毛
petshop.pets[0].price=3365.21

petshop.pets[1].name=巴哥
petshop.pets[1].price=2136.10

修改PetShop類,添加@PropertySource注解導入properties文件

@Data
@Component
@PropertySource(value = "classpath:petshop/petshop.properties", encoding = "UTF-8")
@ConfigurationProperties(prefix = "petshop")
public class PetShop {
    private String name;
    private String introduce;
    private PetShopInfo shopInfo;
    private List<Pet> pets;
}

訪問http://localhost:8080/source/show發(fā)現可以得到與上例相同的結果。

總結

到此這篇關于SpringBoot屬性注入的多種方式的文章就介紹到這了,更多相關SpringBoot屬性注入內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • JavaWeb?Hibernate使用全面介紹

    JavaWeb?Hibernate使用全面介紹

    在正式進入Hibernate的高級應用之前,需要了解聲明是數據模型與領域模型,這兩個概念將會幫助我們更好的理解實體對象的關聯關系映射
    2022-10-10
  • mall整合SpringSecurity及JWT實現認證授權實戰(zhàn)

    mall整合SpringSecurity及JWT實現認證授權實戰(zhàn)

    這篇文章主要為大家介紹了mall整合SpringSecurity及JWT實現認證授權實戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • java實現時間控制的幾種方案

    java實現時間控制的幾種方案

    這篇文章主要介紹了java實現時間控制的幾種方案,本文從多個方面給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • 簡單了解Spring循環(huán)依賴解決過程

    簡單了解Spring循環(huán)依賴解決過程

    這篇文章主要介紹了簡單了解Spring循環(huán)依賴解決過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • SpringBoot?DataSource數據源實現自動配置流程詳解

    SpringBoot?DataSource數據源實現自動配置流程詳解

    這篇文章主要介紹了SpringBoot?DataSource數據源實現自動配置流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-10-10
  • Java中的注解和反射實例詳解

    Java中的注解和反射實例詳解

    這篇文章主要給大家介紹了關于Java中注解和反射的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • Mybatis示例之SelectKey的應用

    Mybatis示例之SelectKey的應用

    今天小編就為大家分享一篇關于Mybatis示例之SelectKey的應用,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Java局部打印效果不同問題解決方案

    Java局部打印效果不同問題解決方案

    這篇文章主要介紹了Java局部打印效果不同問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Java中的SimpleDateFormat的線程安全問題詳解

    Java中的SimpleDateFormat的線程安全問題詳解

    這篇文章主要介紹了Java中的SimpleDateFormat的線程安全問題詳解,sonar 是一個代碼質量管理工具,SonarQube是一個用于代碼質量管理的開放平臺,為項目提供可視化報告, 連續(xù)追蹤項目質量演化過程,需要的朋友可以參考下
    2024-01-01
  • 解決RabbitMq消息隊列Qos?Prefetch消息堵塞問題

    解決RabbitMq消息隊列Qos?Prefetch消息堵塞問題

    這篇文章主要為大家介紹了關于如何解決解決RabbitMq?Qos?Prefetch消息堵塞的問題分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-01-01

最新評論