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

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

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

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

問(wèn)題描述

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

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

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

實(shí)踐

application.properties

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

從上述的配置項(xiàng)中,可以看到明顯的相似性,即這一簇配置均以tomcat開(kāi)始,類似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();
    }

}

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

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

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

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

如下所示:

我們都知道在Spring中,可以使用@Value對(duì)單個(gè)屬性進(jìn)行注入配置操作

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

如下所示:

@ConfigurationProperties注解的功能:

  • 將properties屬性和一個(gè)Bean及其屬性關(guān)聯(lián)
  • 從而實(shí)現(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方法
}

對(duì)應(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());
? ? }
}

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

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

例:

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

例:

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

總結(jié)

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

相關(guān)文章

  • 基于SpringBoot實(shí)現(xiàn)發(fā)送帶附件的郵件

    基于SpringBoot實(shí)現(xiàn)發(fā)送帶附件的郵件

    這篇文章主要介紹了基于SpringBoot實(shí)現(xiàn)發(fā)送帶附件的郵件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java中的RMI使用方法詳解

    Java中的RMI使用方法詳解

    這篇文章主要介紹了Java中的RMI使用方法,RMI是Java提供的一個(gè)完善的簡(jiǎn)單易用的遠(yuǎn)程方法調(diào)用框架,采用客戶服務(wù)器通信方式,在服務(wù)器上部署了提供各種服務(wù)的遠(yuǎn)程對(duì)象,下面我們來(lái)詳細(xì)講解
    2023-10-10
  • Java的HashTable源碼解讀

    Java的HashTable源碼解讀

    這篇文章主要介紹了Java的HashTable源碼解讀,HashTable繼承了Dictionary類,提供了一些字典相關(guān)的基本功能如添加、刪除、判空、獲取元素?cái)?shù)量等,需要的朋友可以參考下
    2023-12-12
  • 詳解Redis 緩存 + Spring 的集成示例

    詳解Redis 緩存 + Spring 的集成示例

    本篇文章主要介紹了Redis 緩存 + Spring 的集成示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • 超簡(jiǎn)單的java獲取鼠標(biāo)點(diǎn)擊位置坐標(biāo)的實(shí)例(鼠標(biāo)在Jframe上的坐標(biāo))

    超簡(jiǎn)單的java獲取鼠標(biāo)點(diǎn)擊位置坐標(biāo)的實(shí)例(鼠標(biāo)在Jframe上的坐標(biāo))

    在Java窗體Jframe上獲取鼠標(biāo)點(diǎn)擊的坐標(biāo),其中使用了匿名內(nèi)部類,實(shí)例代碼非常簡(jiǎn)單易懂,大家可以學(xué)習(xí)一下
    2018-03-03
  • JavaWeb中web.xml初始化加載順序詳解

    JavaWeb中web.xml初始化加載順序詳解

    本篇文章主要介紹了JavaWeb中web.xml初始化加載順序詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • mybatis的association傳遞參數(shù)問(wèn)題示例

    mybatis的association傳遞參數(shù)問(wèn)題示例

    這篇文章主要介紹了mybatis的association傳遞參數(shù)問(wèn)題,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • Spring深入了解常用配置應(yīng)用

    Spring深入了解常用配置應(yīng)用

    這篇文章主要給大家介紹了關(guān)于Spring的常用配置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用springboot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-07-07
  • 由淺入深快速掌握J(rèn)ava?數(shù)組的使用

    由淺入深快速掌握J(rèn)ava?數(shù)組的使用

    Java?數(shù)組?數(shù)組對(duì)于每一門(mén)編程語(yǔ)言來(lái)說(shuō)都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同語(yǔ)言對(duì)數(shù)組的實(shí)現(xiàn)及處理也不盡相同。?Java?語(yǔ)言中提供的數(shù)組是用來(lái)存儲(chǔ)固定大小的同類型元素
    2022-04-04
  • java實(shí)現(xiàn)TCP socket和UDP socket的實(shí)例

    java實(shí)現(xiàn)TCP socket和UDP socket的實(shí)例

    這篇文章主要介紹了本文主要介紹了java實(shí)現(xiàn)TCP socket和UDP socket的實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評(píng)論