一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringBoot屬性注入的多種方式實例

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

2022-03-07 00:29NicholasGUB Java教程

在 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觀察被注入的屬性:

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

 

二、@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;
  }
}

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

 

三、注入實體對象

使用@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;
  }
}

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

 

四、自定義文件注入

在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發現可以得到與上例相同的結果。

 

總結

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

原文鏈接:https://blog.csdn.net/Nicholas_GUB/article/details/120997989

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: t66y地址一地址二地址三 | 欧美日韩亚洲另类人人澡 | 欧美人成绝费网站色www吃脚 | 翁公与小莹在客厅激情 | 免费国产在线视频 | 日韩高清一区二区 | 岛国a香蕉片不卡在线观看 荡女淫春2古装 | 福利一区在线观看 | 99re这里只有精品视频 | 久久婷婷五月免费综合色啪 | 513热点网深夜影院影院诶 | 日韩伦理在线免费观看 | 亚洲精品中文字幕在线 | 免费看国产精品麻豆 | 国产精品密播放国产免费看 | 荡女人人爱全文免费阅读 | 日本四虎影视 | 欧美一级在线全免费 | 国产亚洲精品高清在线 | 国产福利在线免费观看 | 精品国产日韩亚洲一区在线 | 99热精品久久 | 亚洲精品永久免费 | 暖暖日本在线观看免费 | 免费观看欧美性一级 | 国产美女久久久久 | 国产在线精品香蕉综合网一区 | 26uuu久久| 手机看片日韩1024你懂的首页 | 日本欧美大码a在线视频播放 | 麻生希在线观看 | 成人欧美一区在线视频在线观看 | 天天有好逼 | 午夜十八岁禁 | 大团圆6全文在线阅读 | 东北疯狂xxxxbbbb中国 | 日韩在线天堂 | h肉动漫在线视频无修无遮挡 | 日本免费播放 | 精品无码久久久久久久动漫 | 香蕉免费一区二区三区在线观看 |