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

SpringBoot萬(wàn)字爆肝高級(jí)配置

 更新時(shí)間:2022年07月18日 09:11:36   作者:不會(huì)壓彎的小飛俠  
SpringBoot不僅支持常規(guī)的properties配置文件,還支持yaml語(yǔ)言的配置文件,yaml是以數(shù)據(jù)為中心的語(yǔ)言,在配置數(shù)據(jù)的時(shí)候具有面向?qū)ο蟮奶卣?。application.properties是比較常見的配置文件,SpringBoot的全局配置文件的作用是對(duì)一些默認(rèn)配置的配置值進(jìn)行修改

@ConfigurationProperties注入

創(chuàng)建一個(gè)新的模板

此過程就不在這介紹了,在我SpringBoot專欄里有詳細(xì)過程。

???注意的是加入所需的支持這什么也不勾選。

ServerConfig.java

package com.jkj.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@ConfigurationProperties(prefix = "servers")
@Component
@Data
public class ServerConfig {
    private String ipAddress;
    private int port;
    private long timeout;
}

???注意:

@Data

為當(dāng)前實(shí)體類在編譯期設(shè)置對(duì)應(yīng)的get/set,toString方法,hashCode方法,equals方法等。

需要導(dǎo)入lomok的依賴:

<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>

編寫application.yml

servers:
  ipAddress: 168.225.0.15
  port: 1234
  timeout: -1

編寫ConfigurationApplication.java

@SpringBootApplication
public class ConfigurationApplication {
	public static void main(String[] args) {
		ConfigurableApplicationContext cac = SpringApplication.run(ConfigurationApplication.class, args);
		ServerConfig bean = cac.getBean(ServerConfig.class);
		System.out.println(bean); 
	}
}

運(yùn)行結(jié)果:ServerConfig(ipAddress=168.225.0.15, port=123456, timeout=-1)

給第三方Bean綁定屬性

方式一

??編寫ConfigurationApplication.java

@SpringBootApplication
public class ConfigurationApplication {
    @Bean
	public DruidDataSource dataSource(){
		DruidDataSource ds = new DruidDataSource();
		ds.setDriverClassName("com.mysql.jdbc.Driver");
		return ds;
	}
	public static void main(String[] args) {
		ConfigurableApplicationContext cac = SpringApplication.run(ConfigurationApplication.class, args);
		ServerConfig bean = cac.getBean(ServerConfig.class);
		System.out.println(bean); 
		DruidDataSource ds = cac.getBean(DruidDataSource.class);
		System.out.println(ds);
	}
}

運(yùn)行結(jié)果:com.mysql.jdbc.Driver

方式二

使用@ConfigurationProperties為第三方bean綁定屬性

??編寫application.yml

servers:
  ipAddress: 168.225.0.15
  port: 1234
  timeout: -1
dataSource:
  driverClassName: com.mysql.jdbc.Driver

??編寫ConfigurationApplication.java

@SpringBootApplication
public class ConfigurationApplication {
    @Bean
    @ConfigurationProperties(prefix = "datasource")
	public DruidDataSource dataSource(){
		DruidDataSource ds = new DruidDataSource();
		return ds;
	}
	public static void main(String[] args) {
		ConfigurableApplicationContext cac = SpringApplication.run(ConfigurationApplication.class, args);
		ServerConfig bean = cac.getBean(ServerConfig.class);
		System.out.println(bean); 
		DruidDataSource ds = cac.getBean(DruidDataSource.class);
		System.out.println(ds.getDriverClassName()); 
	}
}

運(yùn)行結(jié)果:com.mysql.jdbc.Driver

@EnableconfigurationProperties

@EnableConfigurationProperties注解可以將使用@ConfigurationProperties注解對(duì)應(yīng)的類加入Spring容器

??ConfigurationApplication.java

@SpringBootApplication
@EnableConfigurationProperties(ServerConfig.class)
public class ConfigurationApplication {
    @Bean
    @ConfigurationProperties(prefix = "datasource")
	public DruidDataSource dataSource(){
		DruidDataSource ds = new DruidDataSource();
		return ds;
	}
	public static void main(String[] args) {
		ConfigurableApplicationContext cac = SpringApplication.run(ConfigurationApplication.class, args);
		ServerConfig bean = cac.getBean(ServerConfig.class);
		System.out.println(bean); 
		DruidDataSource ds = cac.getBean(DruidDataSource.class);
		System.out.println(ds.getDriverClassName()); 
	}
}

??ServerConfig.java

package com.jkj.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "servers")
@Data
public class ServerConfig {
    private String ipAddress;
    private int port;
    private long timeout;
}

???注意:@EnableConfigurationProperties@Component不能同時(shí)使用

解除使用@ConfigurationProperties注釋警告

加入依賴:

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

寬松綁定

  • 寬松綁定就是configrationProperties注入的書寫規(guī)范并不嚴(yán)格,大小寫,下劃線、中劃線、springboot都可以忽略。
  • @ConfigurationProperties綁定屬性支持屬性名寬松綁定。

以ipAddress為例:

??駝峰模式

 ipAddress: 168.225.0.15

??下劃線模式

ip_address: 168.225.0.15

??中劃線模式

IP_ADD_R-E-SS: 168.225.0.15

??常量模式

IP_ADDRESS: 168.225.0.15

??大寫模式

 IPADDRESS: 168.225.0.15

??烤肉串模式(推薦使用)

  ip-address: 168.225.0.15

寬松綁定不支持注解@Value引用單個(gè)屬性的方式

??測(cè)試:

package com.jkj;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Springboot06ConfigurationApplicationTests {
    @Value("${servers.ipAddress}")
	private String msg;
	@Test
	void contextLoads() {
		System.out.println(msg); 
	}
}

報(bào)錯(cuò)信息:Could not resolve placeholder 'servers.ipAddress' in value "${servers.ipAddress}"

常量計(jì)量單位綁定

SpringBoot支持JDK8提供的時(shí)間與空間計(jì)量單位

package com.jkj.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.convert.DataSizeUnit;
import org.springframework.boot.convert.DurationUnit;
import org.springframework.util.unit.DataSize;
import org.springframework.util.unit.DataUnit;
import java.time.Duration;
import java.time.temporal.ChronoUnit;
@ConfigurationProperties(prefix = "servers")
@Data
public class ServerConfig {
    private String ipAddress;
    private int port;
    private long timeout;
    @DurationUnit(ChronoUnit.DAYS)
    private Duration serverTimeOut;
    @DataSizeUnit(DataUnit.TERABYTES)
    private DataSize dataSize;
}

??常用計(jì)量單位 ChronoUnit

DataUnit

數(shù)據(jù)校驗(yàn)

??添加了SR303規(guī)范坐標(biāo)與Hibernate校驗(yàn)框架對(duì)應(yīng)坐標(biāo)

	<dependency>
			<groupId>javax.validation</groupId>
			<artifactId>validation-api</artifactId>
		</dependency>

??使用hibernate框架提供的校驗(yàn)器做實(shí)現(xiàn)類

<dependency>
			<groupId>org.hibernate.validator</groupId>
			<artifactId>hibernate-validator</artifactId>
		</dependency>

??對(duì)Bean開啟校驗(yàn)功能

@ConfigurationProperties(prefix = "servers")
@Validated
@Data
public class ServerConfig {
    private String ipAddress;
    private int port;
    private long timeout;
}

??設(shè)置校驗(yàn)規(guī)則

@ConfigurationProperties(prefix = "servers")
@Validated
@Data
public class ServerConfig {
    private String ipAddress;
    @Max(value = 9999,message = "最大值不能超過9999")
    @Min(value = 1111,message = "最小值不能超過1111")
    private int port;
    private long timeout;
}

??yml文件中port設(shè)置為1234,測(cè)試結(jié)果如下

進(jìn)制數(shù)據(jù)轉(zhuǎn)換規(guī)則

案例模擬

??編寫application.yml

servers:
  ipAddress: 168.225.0.15
  port: 1234
  timeout: -1
dataSource:
  driverClassName: com.mysql.jdbc.Driver
  password: 0123

??編寫ConfigureApplication,java

package com.jkj;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Springboot06ConfigurationApplicationTests {
    @Value("${dataSource.Password}")
	private Password psw;
	@Test
	void contextLoads() {
		System.out.println(psw); 
	}
}

測(cè)試結(jié)果是個(gè)八進(jìn)制的83。

???注意:根據(jù)字面值表達(dá)方式,String類型的需要使用雙引號(hào)包裹。

??重新編寫application.yml

servers:
  ipAddress: 168.225.0.15
  port: 1234
  timeout: -1
dataSource:
  driverClassName: com.mysql.jdbc.Driver
  password: "0123"

運(yùn)行結(jié)果:

到此這篇關(guān)于SpringBoot萬(wàn)字爆肝高級(jí)配置的文章就介紹到這了,更多相關(guān)SpringBoot高級(jí)配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實(shí)現(xiàn)的百度語(yǔ)音識(shí)別功能示例

    Java實(shí)現(xiàn)的百度語(yǔ)音識(shí)別功能示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的百度語(yǔ)音識(shí)別功能,較為簡(jiǎn)明扼要的分析了Java調(diào)用百度語(yǔ)音接口相關(guān)操作步驟,并給出了具體的語(yǔ)音識(shí)別用法代碼示例,需要的朋友可以參考下
    2018-08-08
  • MyBatis是如何實(shí)現(xiàn)日志模塊的詳解

    MyBatis是如何實(shí)現(xiàn)日志模塊的詳解

    這篇文章主要給大家介紹了關(guān)于MyBatis是如何實(shí)現(xiàn)日志模塊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用MyBatis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • java多線程中的異常處理機(jī)制簡(jiǎn)析

    java多線程中的異常處理機(jī)制簡(jiǎn)析

    在java多線程程序中,所有線程都不允許拋出未捕獲的checked exception,也就是說各個(gè)線程需要自己把自己的checked exception處理掉,需要了解的朋友可以參考下
    2012-11-11
  • 解決Java導(dǎo)入excel大量數(shù)據(jù)出現(xiàn)內(nèi)存溢出的問題

    解決Java導(dǎo)入excel大量數(shù)據(jù)出現(xiàn)內(nèi)存溢出的問題

    今天小編就為大家分享一篇解決Java導(dǎo)入excel大量數(shù)據(jù)出現(xiàn)內(nèi)存溢出的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 詳解Java線程池的使用及工作原理

    詳解Java線程池的使用及工作原理

    在日常開發(fā)過程中總是以單線程的思維去編碼,沒有考慮到在多線程狀態(tài)下的運(yùn)行狀況.由此引發(fā)的結(jié)果就是請(qǐng)求過多,應(yīng)用無(wú)法響應(yīng).為了解決請(qǐng)求過多的問題,又衍生出了線程池的概念.本文記錄了Java中線程池的使用及工作原理,需要的朋友可以參考下
    2021-05-05
  • Spring Boot命令行運(yùn)行器的實(shí)現(xiàn)方法

    Spring Boot命令行運(yùn)行器的實(shí)現(xiàn)方法

    這篇文章主要介紹了Spring Boot命令行運(yùn)行器的實(shí)現(xiàn)方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-10-10
  • 基于jdk1.8的Java源碼詳解 Integer

    基于jdk1.8的Java源碼詳解 Integer

    這篇文章主要介紹了基于jdk1.8的Java源碼詳解 Integer,Integer是int的Warpper類,是面向?qū)ο蟮募碠OP的對(duì)象類型,,需要的朋友可以參考下
    2019-06-06
  • AJAX中Get請(qǐng)求報(bào)錯(cuò)404的原因以及解決辦法

    AJAX中Get請(qǐng)求報(bào)錯(cuò)404的原因以及解決辦法

    剛學(xué)習(xí)一門技術(shù)時(shí)總會(huì)踩一些坑,下面這篇文章主要給大家介紹了關(guān)于AJAX中Get請(qǐng)求報(bào)錯(cuò)404的原因及解決辦法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • Java模擬qq軟件的詳細(xì)過程

    Java模擬qq軟件的詳細(xì)過程

    這篇文章主要為大家詳細(xì)介紹了用Java實(shí)現(xiàn)模擬QQ,實(shí)現(xiàn)了消息通信+登陸界面美化,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 你真的知道Java中對(duì)象的銷毀嗎

    你真的知道Java中對(duì)象的銷毀嗎

    java自帶垃圾回收機(jī)制,會(huì)自動(dòng)識(shí)別內(nèi)存中不再會(huì)被使用的對(duì)象并將其銷毀,釋放內(nèi)存,下面這篇文章主要介紹了Java中對(duì)象銷毀的相關(guān)資料,需要的朋友可以參考下
    2021-10-10

最新評(píng)論