日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

SpringBoot项目属性配置

發布時間:2023/11/29 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot项目属性配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們知道,在項目中,很多時候需要用到一些配置的東西,這些東西可能在測試環境和生產環境下會有不同的配置,后面也有可能會做修改,所以我們不能在代碼中寫死,要寫到配置中。我們可以把這些內容寫到application.yml文件中。

舉個例子,在微服務架構中,某個服務經常會調用其他服務來獲取相關信息,那么需要配置其他服務的地址,我們可以做如下配置:

server:port:?8001#?配置多個微服務的地址 url:#?訂單微服務的地址orderUrl:?http://localhost:8002#?用戶微服務的地址userUrl:?http://localhost:8003#?購物車微服務的地址shoppingUrl:?http://localhost:8004

然后在代碼中如何獲取到這些配置內容呢?我們在屬性上使用@Value注解即可獲取到,如下:

import?org.slf4j.Logger; import?org.slf4j.LoggerFactory; import?org.springframework.beans.factory.annotation.Value; import?org.springframework.web.bind.annotation.RequestMapping; import?org.springframework.web.bind.annotation.RestController;@RestController @RequestMapping("/test") public?class?TestController?{private?static?final?Logger?LOGGER?=?LoggerFactory.getLogger(TestController.class);@Value("${url.orderUrl}")private?String?orderUrl;@Value("${url.userUrl}")private?String?userUrl;@Value("${url.shoppingUrl}")private?String?shoppingUrl;@RequestMapping("/config")public?String?testConfig()?{LOGGER.info("=====獲取的訂單服務地址為:{}",?orderUrl);LOGGER.info("=====獲取的用戶服務地址為:{}",?userUrl);LOGGER.info("=====獲取的購物車服務地址為:{}",?shoppingUrl);return?"success";} }

很簡單,請求一下該8001端口的服務后,可以看到控制臺會打印出三個服務的地址,在實際項目中也是這么用的,后面如果因為服務器部署的原因,需要修改某個服務的地址,那么只要在配置文件中修改即可。

這里再引申一個問題,隨著業務復雜度的增加,一個項目中可能會有越來越多的微服務,那么代碼中,如果這樣一個個去使用@Value注解引入的話,太繁瑣,也不科學。所以可以考慮封裝一個配置類。

/***?@author?shengwu?ni*?@date?2018/06/11*/ @Component @ConfigurationProperties(prefix?=?"url") public?class?MicroServiceUrl?{private?String?orderUrl;private?String?userUrl;private?String?shoppingUrl;//?省去get和set方法 }

使用@ConfigurationProperties注解可以指定一個前綴,然后該類中的屬性名就是配置中去掉前綴后的名字,一一對應即可。同時,該類上面需要加上@Component注解,作為組件放到Spring容器中。對了,使用@ConfigurationProperties需要導入一個依賴:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional> </dependency>


OK,再寫個Controller來測試一下,此時,不需要再一個個引入了,直接通過@Resource注解將剛剛的配置類注入進來即可使用了,非常方便。如下:

@RestController @RequestMapping("/test") public?class?TestController?{private?static?final?Logger?LOGGER?=?LoggerFactory.getLogger(TestController.class);@Resourceprivate?MicroServiceUrl?microServiceUrl;@RequestMapping("/config")public?String?testConfig()?{LOGGER.info("=====獲取的訂單服務地址為:{}",?microServiceUrl.getOrderUrl());LOGGER.info("=====獲取的用戶服務地址為:{}",?microServiceUrl.getUserUrl());LOGGER.info("=====獲取的購物車服務地址為:{}",?microServiceUrl.getShoppingUrl());return?"success";} }


關注小編

可獲得兩大新人禮包

36份一線互聯網Java面試電子書

84個Java稀缺面試題視頻

地址:http://yunxi.ai/java/java.html


轉載于:https://blog.51cto.com/13672983/2128157

總結

以上是生活随笔為你收集整理的SpringBoot项目属性配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。