基于springboot+enum配置化的方法
前言
Springboot/Springcloud作為微服務開發(fā)的經(jīng)典框架,我想任何一個developer不會排斥。同時,市場越來越多的業(yè)務開發(fā)均圍繞Springboot/Springcloud而展開,也讓它成為Java開發(fā)的“硬通貨”。
基于Spring,諸多低代碼的平臺的活躍,進一步促進了微服務領域技術的蓬勃發(fā)展,也減少了每個developer抽象的煩惱。正如spring宣傳的口號:
Spring makes Java simpleSpring makes Java modernSpring makes Java productiveSpring makes Java reactive
它讓Java變的“簡單、先進、富有成效而又靈活”了。

今日,博主通過springboot+enum實現(xiàn)自定義參數(shù)的初始化和應用。
一. 自定義參數(shù)并創(chuàng)建一個enum
在springboot project中,我們通常會get一個yml文件,一般名為:bootstrap.yml。文件的大致內(nèi)容是對當前service的定義和運行的描述,形如:
# Tomcat
server:
port: 8080
# Spring
spring:
application:
# 應用名稱
name: myapp
該文件指定了當前service 的端口號和名稱,當然還可以添加更多你認為重要的參數(shù)。接下來,博主帶這各位看看如何使用springboot+enum實現(xiàn)配置參數(shù)的獲取和使用。
1. 自定義參數(shù)
首先定義一些參數(shù),比如我們可以在bootstrap.yml中,添加以下參數(shù):
api: url: https://testapi.com key: 123 secret: 123456
2. 自定義enum
再來定義一個枚舉類MyEnum:
public class MyEnum {
public enum api {
// 定義一個枚舉,默認提供實際值,下一步通過配置參數(shù)替換
token("token","https://testapi.com/api/token"),
;
private String code;
private String url;
//定義構(gòu)造器
api(String code, String url){
this.code = code;
this.url = url;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
}
這里博主內(nèi)置了一個token api的完整URL,顯然不便于未來的維護。完成以上準備后,我們看看下一步如何使用自定義參數(shù)來改造它。
二. 在enum或bean中使用參數(shù)
1. @Value簡介
我們知道基于springboot,有多種參數(shù)的加載(load)方式。這里博主以@Value為例進行說明。
@Value注解可以用來將外部的值動態(tài)注入到 Bean 中,通常用于屬性的注入。可以用在字段或者方法上,但是不能直接用于static或者final修飾的字段上。使用該方式時,必須滿足spring依賴注入的要求,否則無法生效。
2. 創(chuàng)建Java bean并注入?yún)?shù)
通過在指定的屬性上,添加@Value("${XXX}"),實現(xiàn)參數(shù)注入。
@Component
@Data
public class ApiBean implements Serializable
{
private static final long serialVersionUID = 1L;
//key
@Value("${api.key}")
private String key;
//secret
@Value("${api.secret}")
private String secret;
}
提示:該Bean必須添加@Component注解,否則無效。
3. 修改enum類并注入?yún)?shù)
public class MyEnum {
//使用參數(shù)值
static String apiUrl = MyEnum.api.MyEnumInit.urlRoot;
public enum api {
// 替換為參數(shù)提供的值
token("token",apiUrl+"/api/token"),
;
private String code;
private String url;
//定義構(gòu)造器
api(String code, String url){
this.code = code;
this.url = url;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
// 看這里,新增內(nèi)部類,支持注入
@Component
static class MyEnumInit{
private static String urlRoot;
@Value("${api.url}")
public void getUrl(String url) {
MyEnumInit.urlRoot = url;
}
}
}
}
提示:內(nèi)部類必須添加@Component注解,否則無效。
關鍵的實現(xiàn)是enum中內(nèi)部類的定義:MyEnumInit。通過內(nèi)部類實現(xiàn)依賴注入,完成url配置參數(shù)的獲取。這是“曲線救國”的典型實踐。
結(jié)語
本案例通過@Value注解實現(xiàn)自定義參數(shù)的使用。通過Java bean和enum兩種形式,實現(xiàn)配置參數(shù)的注入,從而滿足不同場景的使用需求。
到此這篇關于基于springboot+enum配置化的方法的文章就介紹到這了,更多相關springboot+enum配置化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Mybatis查詢Sql結(jié)果未映射到對應得實體類上的問題解決
使用mybatis查詢表數(shù)據(jù)得時候,發(fā)現(xiàn)對應得實體類字段好多都是null,本文主要介紹了Mybatis查詢Sql結(jié)果未映射到對應得實體類上的問題解決,具有一定的參考價值,感興趣的可以了解一下2024-02-02
Spring中的攔截器HandlerInterceptor詳細解析
這篇文章主要介紹了Spring中的攔截器HandlerInterceptor詳細解析,HandlerInterceptor 是 Spring 框架提供的一個攔截器接口,用于在請求處理過程中攔截和處理請求,需要的朋友可以參考下2024-01-01
詳解如何使用java實現(xiàn)Open Addressing
這篇文章主要介紹了詳解如何使用java實現(xiàn)Open Addressing,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12
Java 配置log4j日志文件路徑 (附-獲取當前類路徑的多種操作)
這篇文章主要介紹了Java 配置log4j日志文件路徑 (附-獲取當前類路徑的多種操作),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10

