最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用@ConfigurationProperties實現(xiàn)類型安全的配置過程

 更新時間:2023年02月13日 10:34:49   作者:思影影思  
這篇文章主要介紹了使用@ConfigurationProperties實現(xiàn)類型安全的配置過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

@ConfigurationProperties實現(xiàn)類型安全的配置

問題描述

從之前@Value的使用,可以知道@Value可以靈活的把配置文件中的鍵值對的值注入到Bean中供我們使用,已經(jīng)很靈活了,但這還不夠,比如下述的application.properties

tomcat.ip=192.168.1.110
tomcat.port=8787
tomcat.projectName=screenshot
tomcat.userName=admin
tomcat.password=admin

如果也要按照之前的描述,使用@value就要填寫5次,這顯然令人惆悵,在程序員的世界里,所有重復(fù)性的工作都應(yīng)該被取代,因此Spring Boot為我們提供了@ConfigurationProperties注解。

實踐

application.properties

tomcat.ip=192.168.1.110
tomcat.port=8787
tomcat.projectName=screenshot

從上述的配置項中,可以看到明顯的相似性,即這一簇配置均以tomcat開始,類似String類中的startWith函數(shù)。

核心代碼

package com.wisely.ch6_2_3.config;

import lombok.Getter;
import lombok.Setter;
import lombok.extern.log4j.Log4j;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "tomcat") //1
@Log4j
public class TomcatSetting {
    @Getter
    @Setter
    private String ip;
    @Getter
    @Setter
    private int port;
    @Getter
    @Setter
    private String projectName;

    public String getUrl() {
        return "http://"+getIp()+"/"+getPort()+"/"+getProjectName();
    }

}

通過這種方法,即可實現(xiàn)一次性注入相似的配置,非常方便。

減少了重復(fù)性工作,即提高優(yōu)雅度,也能減少錯誤,很酷。

關(guān)于ConfigurationProperties注解的說明

下文筆者講述Spring Boot中ConfigurationProperties注解的相關(guān)說明

如下所示:

我們都知道在Spring中,可以使用@Value對單個屬性進行注入配置操作

但是很多配置都具有一定的層級,那么此時Spring提供了一個基于層級配置的注解

如下所示:

@ConfigurationProperties注解的功能:

  • 將properties屬性和一個Bean及其屬性關(guān)聯(lián)
  • 從而實現(xiàn)類型安全配置

例:

@ConfigurationProperties加載properties文件內(nèi)的配置 使用prefix屬性指定配置文件中定義的properties配置的統(tǒng)一前綴

@ConfigurationProperties(prefix = "remote"}) ?

---Spring Boot1.5之前,使用以下配置指定properties文件的位置

@ConfigurationProperties(prefix = "remote",locations={"classpath:remote.properties"})?

示例代碼如下:

remote.address= www.java265.com
remote.port= 9090

?
@Component
@PropertySource({"classpath:remote.properties"})
@ConfigurationProperties(prefix = "remote")
public class RemoteConfig {
? ??
? ? private String address;
? ? private int port;
? ? // getter/stetter方法
}

對應(yīng)RemoteConfig的Bean的使用:

@RestController
public class ConfigurationController {
? ? @Resource
? ? private RemoteConfig remoteConfig;
? ? @GetMapping
? ? public void getInfo() {
? ? ? ? System.out.println("地址:" + remoteConfig.getAddress());
? ? ? ? System.out.println("端口:" + remoteConfig.getPort());
? ? }
}

//測試
@SpringBootTest
@AutoConfigureMockMvc
class ConfigurationControllerTest {
? ? @Autowired
? ? private MockMvc mockMvc;
? ? @Test
? ? void getInfo() throws Exception {
? ? ? ? mockMvc.perform(MockMvcRequestBuilders.get("/"));
? ? }
}

-----運行以上代碼,將輸出以下信息------
地址:www.java265.com
端口:9090

例:

@ConfigurationProperties注解應(yīng)用于Bean方法上的示例分享

例:

@Configuration
public class MyConfig {
? ? @Bean
? ? @ConfigurationProperties(prefix = "user")
? ? public User user() {
? ? ? ? return new User();
? ? }
}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 在JDK和Eclipse下如何編寫和運行Java Applet

    在JDK和Eclipse下如何編寫和運行Java Applet

    本文主要介紹了在JDK和Eclipse的環(huán)境下如何編寫和運行Java Applet,圖文方式,適合初學(xué)者學(xué)習(xí)。
    2015-09-09
  • Java實現(xiàn)發(fā)送郵件功能時碰到的坑

    Java實現(xiàn)發(fā)送郵件功能時碰到的坑

    之前用163郵箱發(fā)郵件時明明是成功的,但是使用中國移動自己的郵箱時,無論如何在linux服務(wù)器中都發(fā)送不成功。下面小編給大家說下我是怎么解決的,一起看下吧
    2016-06-06
  • 在spring?boot3中使用native?image的最新方法

    在spring?boot3中使用native?image的最新方法

    這篇文章主要介紹了在spring?boot3中使用native?image?,今天我們用具體的例子來給大家演示一下如何正確的將spring boot3的應(yīng)用編譯成為native image,需要的朋友可以參考下
    2023-01-01
  • java編寫簡易貪吃蛇游戲

    java編寫簡易貪吃蛇游戲

    這篇文章主要為大家詳細介紹了java編寫簡易貪吃蛇游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Java設(shè)計模式之享元模式示例詳解

    Java設(shè)計模式之享元模式示例詳解

    享元模式(FlyWeight?Pattern),也叫蠅量模式,運用共享技術(shù),有效的支持大量細粒度的對象,享元模式就是池技術(shù)的重要實現(xiàn)方式。本文將通過示例詳細講解享元模式,感興趣的可以了解一下
    2022-03-03
  • minio安裝部署及使用的詳細過程

    minio安裝部署及使用的詳細過程

    MinIO是一個基于Apache?License?v2.0開源協(xié)議的對象存儲服務(wù),下面這篇文章主要給大家介紹了關(guān)于minio安裝部署及使用的詳細過程,文中通過實例代碼以及圖文介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • java中HashSet的特點及實例用法

    java中HashSet的特點及實例用法

    在本篇文章里小編給大家整理的是一篇關(guān)于java中HashSet的特點及實例用法,有興趣的朋友們可以學(xué)習(xí)下。
    2021-04-04
  • springboot多數(shù)據(jù)源配合docker部署mysql主從實現(xiàn)讀寫分離效果

    springboot多數(shù)據(jù)源配合docker部署mysql主從實現(xiàn)讀寫分離效果

    這篇文章主要介紹了springboot多數(shù)據(jù)源配合docker部署mysql主從實現(xiàn)讀寫分離,通過使用docker獲取mysql鏡像,具體內(nèi)容詳情跟隨小編一起看看吧
    2021-09-09
  • Java實現(xiàn)文件上傳的方法總結(jié)

    Java實現(xiàn)文件上傳的方法總結(jié)

    這篇文章主要為大家介紹了三種Java實現(xiàn)文件上傳的方法,文中的示例代碼講解詳細,對我們的學(xué)習(xí)或工作有一定的借鑒價值,感興趣的可以了解一下
    2023-04-04
  • SpringData JPA中@OneToMany和@ManyToOne的用法詳解

    SpringData JPA中@OneToMany和@ManyToOne的用法詳解

    這篇文章主要介紹了SpringData JPA中@OneToMany和@ManyToOne的用法詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10

最新評論

寿光市| 台安县| 枞阳县| 囊谦县| 宝应县| 哈巴河县| 哈尔滨市| 靖江市| 工布江达县| 姚安县| 青田县| 视频| 怀集县| 明光市| 和平县| 孝感市| 浏阳市| 页游| 伊川县| 壤塘县| 兴安盟| 佛学| 察隅县| 潜山县| 长春市| 肇源县| 资溪县| 长泰县| 教育| 丹江口市| 芜湖市| 张北县| 杭锦后旗| 游戏| 陵水| 亳州市| 灌云县| 东台市| 韩城市| 长治市| 武冈市|