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

解決@ConfigurationProperties注解的使用及亂碼問題

 更新時間:2022年10月27日 15:14:16   作者:多羅羅~  
這篇文章主要介紹了解決@ConfigurationProperties注解的使用及亂碼問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

@ConfigurationProperties

作用:用于獲取配置文件中的屬性定義并綁定到j(luò)avaBean屬性中

舉個栗子:

配置文件

mycar.name=徐昂
mycar.price=18w

定義實體類

package com.maggie.demo.entity;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Data   //生成setget方法
@Component //將此類注冊為組件
@ConfigurationProperties(prefix = "mycar",ignoreUnknownFields = true) //配置文件屬性讀取,讀取前綴時mycar的,忽略不存在的字段
public class Car {
    private String name;
    private String  price;
    @Override
    public String toString() {
        return "Car{" +
                "name='" + name + '\'' +
                ", price='" + price + '\'' +
                '}';
    }
}

啟動類輸出驗證

package com.maggie.demo;

import com.maggie.demo.entity.Car;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

import java.io.IOException;

@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) throws IOException {
		ConfigurableApplicationContext run = SpringApplication.run(DemoApplication.class, args);
		Car car = run.getBean(Car.class);
		System.out.println(car.toString());
	}
}

輸出結(jié)果

Car{name='�昂', price='18w'}

產(chǎn)生問題,定義中文時,會產(chǎn)生亂碼

解決方法

1,將配置文件換成yml文件,則不會產(chǎn)生亂碼問題

mycar:
  name: '徐昂'
  price: '18w'

2, 覆蓋原文件:org.springframework.boot.env.OriginTrackedPropertiesLoader

將OriginTrackedPropertiesLoader所有代碼復制出來,按照包路徑建立自己的包和類(包名和類名都必須和原來的一致,不然不生效)

然后找出原來的OriginTrackedPropertiesLoader上的編碼片段:

        CharacterReader(Resource resource) throws IOException {
            this.reader = new LineNumberReader(new InputStreamReader(resource.getInputStream(), StandardCharsets.ISO_8859_1));
        }

將其改為 : StandardCharsets.UTF_8

    CharacterReader(Resource resource) throws IOException {
            this.reader = new LineNumberReader(new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8));
        }

重啟項目,發(fā)現(xiàn)項目中文亂碼已經(jīng)解決

Car{name='徐昂', price='18w'}

3, 自定義配置類

配置類

mycar.name=小汽車
mycar.price=18w

定義實體,添加**@PropertySource**注解,指定字符集取utf-8,并指定讀取配置文件的路徑。

注意這種方法只能對自定義的properties文件有效,對于spring boot默認生成的application.properties沒有效果

@Data   //生成setget方法
@Component //將此類注冊為組件
//指定字符集,并且指定讀取的配置文件
@PropertySource(encoding = "UTF-8", value = "classpath:car.properties", ignoreResourceNotFound = true)
@ConfigurationProperties(prefix = "mycar",ignoreUnknownFields = true) //配置文件屬性讀取,讀取前綴是mycar的
public class Car {
    private String name;
    private String  price;

    @Override
    public String toString() {
        return "Car{" +
                "name='" + name + '\'' +
                ", price='" + price + '\'' +
                '}';
    }
}

結(jié)果:

Car{name='小汽車', price='18w'}

第二種不推薦寫法

@ConfigurationProperties+ @EnableConfigurationProperties

@EnableConfigurationProperties作用:開啟組件配置綁定功能,將實體類組件注入到容器中

eg:

mycar.name=小汽車
mycar.price=18w

實體類

package com.maggie.demo.entity;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Data   //生成setget方法
@ConfigurationProperties(prefix = "mycar",ignoreUnknownFields = true) //配置文件屬性讀取,讀取前綴時mycar的,忽略不存在的字段
public class Car {
    private String name;
    private String  price;
    @Override
    public String toString() {
        return "Car{" +
                "name='" + name + '\'' +
                ", price='" + price + '\'' +
                '}';
    }
}

配置類

@Configuration //配置類注解 ==配置文件
@EnableConfigurationProperties(Car.class) //開啟加載配置類
public class BeansConfiguration {
    
}

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

相關(guān)文章

  • Java中抓取 Thread Dumps 的方式匯總

    Java中抓取 Thread Dumps 的方式匯總

    Thread dumps(線程轉(zhuǎn)儲)能幫助我們判斷 CPU 峰值、死鎖、內(nèi)存異常、應用反應遲鈍、響應時間變長和其他系統(tǒng)問題。在這篇文章當中,總結(jié)了7中抓取 Java Thread Dumps 文件的方式,分享給大家,希望對大家學習Java能夠有所幫助。
    2016-06-06
  • Java開發(fā)中的OOM內(nèi)存溢出問題詳解

    Java開發(fā)中的OOM內(nèi)存溢出問題詳解

    這篇文章主要介紹了Java開發(fā)中的OOM內(nèi)存溢出問題詳解,OOM,全稱?Out?Of?Memory,意思是內(nèi)存耗盡或內(nèi)存溢出,當JVM因為沒有足夠的內(nèi)存來為對象分配空間并且垃圾回收器也已經(jīng)沒有空間可回收時,就會拋出這個?error,需要的朋友可以參考下
    2023-08-08
  • struts2 中文亂碼的解決辦法分享

    struts2 中文亂碼的解決辦法分享

    這篇文章主要介紹了struts2 中文亂碼的解決辦法,需要的朋友可以參考下
    2014-02-02
  • Spring中的自動裝配機制詳解

    Spring中的自動裝配機制詳解

    這篇文章主要介紹了Spring中的自動裝配機制詳解,自動裝配就是會通過Spring的上下文為你找出相應依賴項的類,通俗的說就是Spring會在上下文中自動查找,并自動給Bean裝配與其相關(guān)的屬性,需要的朋友可以參考下
    2023-08-08
  • java 中modCount 詳解及源碼分析

    java 中modCount 詳解及源碼分析

    這篇文章主要介紹了java 中modCount 詳解及源碼分析的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • SpringBoot集成swagger-ui以及swagger分組顯示操作

    SpringBoot集成swagger-ui以及swagger分組顯示操作

    這篇文章主要介紹了SpringBoot集成swagger-ui以及swagger分組顯示操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java 如何同時返回多個不同類型

    Java 如何同時返回多個不同類型

    這篇文章主要介紹了Java 同時返回多個不同類型的方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 關(guān)于連接池詳解(HikariCP、Druid)

    關(guān)于連接池詳解(HikariCP、Druid)

    這篇文章主要介紹了關(guān)于連接池詳解(HikariCP、Druid),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • IDEA性能優(yōu)化方法解決卡頓問題

    IDEA性能優(yōu)化方法解決卡頓問題

    本文主要介紹了如何在不升級電腦配置的情況下通過修改IntelliJIDEA的設(shè)置來優(yōu)化其性能,從而提升開發(fā)效率
    2024-12-12
  • java Class文件結(jié)構(gòu)解析常量池字節(jié)碼

    java Class文件結(jié)構(gòu)解析常量池字節(jié)碼

    這篇文章主要為大家介紹了java Class文件的整體結(jié)構(gòu)解析常量池字節(jié)碼詳細講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07

最新評論

监利县| 潮安县| 隆子县| 高唐县| 蒲江县| 云南省| 兴仁县| 来宾市| 长沙县| 临沂市| 乾安县| 道真| 娱乐| 贡觉县| 永州市| 长沙县| 齐齐哈尔市| 新昌县| 贺兰县| 原阳县| 正定县| 汶川县| 阜南县| 昌吉市| 自治县| 乌兰察布市| 灵武市| 洛阳市| 连山| 兴义市| 逊克县| 息烽县| 化德县| 西充县| 嘉祥县| 临江市| 北碚区| 油尖旺区| 旬邑县| 呼伦贝尔市| 桑日县|