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

使用springboot在工具類中讀取配置文件(ClassPathResource)

 更新時(shí)間:2021年08月11日 10:59:46   作者:知識(shí)追求者  
這篇文章主要介紹了使用springboot在工具類中讀取配置文件(ClassPathResource),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot工具類中讀取配置文件

1、創(chuàng)建配置文件(application.properties)

spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin
spring.activemq.in-memory=true
spring.activemq.pool.enabled=false

2、創(chuàng)建工具類(PropertiesUtil.java)

package com.jeff.utils;
import java.io.IOException;
import java.util.Properties;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PropertiesLoaderUtils;
public class PropertiesUtil {
	private static String user;
	static {
		System.out.println("application.properties屬性文件讀取開始");
		ClassPathResource resource = new ClassPathResource("application.properties");
		try {
			Properties properties = PropertiesLoaderUtils.loadProperties(resource);
			user = properties.getProperty("spring.activemq.user");
			System.out.println("user的值:" + user);
		} catch (IOException e) {
			System.out.println("application.properties屬性文件讀取異常" + e);
		}
		System.out.println("application.properties屬性文件讀取完成");
	}
	public static String getUser() {
		System.out.println("獲取user的值:" + user);
		return user;
	}
}

3、創(chuàng)建測(cè)試類(MyController.java)

package com.jeff.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.jeff.utils.PropertiesUtil;
@RestController
public class MyController {
	@RequestMapping("myTest")
	public String myTest() {
		PropertiesUtil.getUser();
		return "success";
	}
}

4、打開瀏覽器訪問 http://localhost:8080/myTest,控制臺(tái)輸出結(jié)果

在這里插入圖片描述

在這里插入圖片描述

springboot讀取配置文件到靜態(tài)工具類

通常我們讀取配置文件可以用@Value注解和@Configuration,@ConfigurationProperties(prefix = "xxx")等注解,但是這種方式是無(wú)法把配置讀取到靜態(tài)變量的,如果我們想在項(xiàng)目初始化時(shí)把配置文件加載到一個(gè)工具類,然后通過(guò)靜態(tài)變量的方式調(diào)用的話我們就不能使用這兩種方法。

這時(shí)候,我們可以用Environment 來(lái)解決

不廢話了,直接上代碼

import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
/**
 * 
 * @Description: 配置常量類——根據(jù)不同的spring-profile加載不同的配置
 * @author: eric.zhang
 * @date: 2018年7月20日 上午10:59:24
 */
@Component
public class ConfigConstant {
  @Autowired
  private Environment env;
  
  public static String url;
  public static String param;
  
  @PostConstruct
  public void readConfig() {
    url = env.getProperty("config.url");
    param = env.getProperty("config.param");
  }
}

我寫完以后發(fā)現(xiàn)有些麻煩,下面是改進(jìn)的方法,不需要每個(gè)配置都去get一下,只需要把配置文件的key與工具類的靜態(tài)變量名寫成一樣的即可。

import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
/**
 * 
 * @Description: 配置常量類——根據(jù)不同的spring-profile加載不同的配置,變量名要與配置文件里寫的名一致
 * @author: eric.zhang
 * @date: 2018年7月20日 上午10:59:24
 */
@Component
public class ConfigConstant {
  @Autowired
  private Environment env;
  
  public static String url;
  public static String name;
  
  
  @PostConstruct
  public void readConfig() throws Exception {
    String prefix = "config.";
    Field[] fields = ConfigConstant.class.getFields();
    for(Field field : fields ){
      field.set(null, getProperty(prefix + field.getName()));
    }
  }
  
  private String getProperty(String key) throws UnsupportedEncodingException {
    return new String(env.getProperty(key).getBytes("ISO-8859-1"), "UTF-8");
  }
}

大哥說(shuō)這樣寫依賴spring, 單測(cè)調(diào)代碼的時(shí)候不方便,所以又寫了一個(gè)不依賴spring的版本。

import java.io.InputStreamReader;
import java.lang.reflect.Field;
import java.util.Properties;
/**
 * 
 * @Description: 配置常量類——根據(jù)不同的spring-profile加載不同的配置
 *               變量名把配置文件的key中的"."替換成"_"命名
 * @author: eric.zhang
 * @date: 2018年7月20日 上午10:59:24
 */
public class ConfigConstant {
  public static String CONFIG_URL;
  public static String CONFIG_NAME;
  static {
    try {
      Properties props = new Properties();
      props.load(new InputStreamReader(
          ConfigConstant.class.getClassLoader().getResourceAsStream("application.properties"),
          "UTF-8"));
      String profile = props.getProperty("spring.profiles.active");
      String envFile = "application-" + profile + ".properties";
      Properties envProps = new Properties();
      envProps.load(new InputStreamReader(
          ConfigConstant.class.getClassLoader().getResourceAsStream(envFile), "UTF-8"));
      Field[] fields = ConfigConstant.class.getFields();
      for (Field field : fields) {
        field.set(null, envProps.getProperty(field.getName().replace("_", ".").toLowerCase()));
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

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

相關(guān)文章

  • Spring Security結(jié)合JWT的方法教程

    Spring Security結(jié)合JWT的方法教程

    這篇文章主要給大家介紹了關(guān)于Spring Security結(jié)合JWT的方法教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • springboot多模塊包掃描問題的解決方法

    springboot多模塊包掃描問題的解決方法

    這篇文章主要介紹了springboot多模塊包掃描問題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • spring?boot獲取session的值為null問題及解決方法

    spring?boot獲取session的值為null問題及解決方法

    我在登陸的時(shí)候,登陸成功后將name存進(jìn)了session,然后在獲取個(gè)人信息時(shí)取出session里的name的值為null,接下來(lái)通過(guò)本文給大家分享springboot獲取session的值為null問題,需要的朋友可以參考下
    2023-05-05
  • Java常見異常及處理方式總結(jié)

    Java常見異常及處理方式總結(jié)

    今天給大家?guī)?lái)的是Java的相關(guān)知識(shí),文章圍繞著Java異常展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 深入理解java的異常情況

    深入理解java的異常情況

    在本篇文章里小編給大家分享了關(guān)于Java的異常類型的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們跟著學(xué)習(xí)下,希望能夠給你帶來(lái)幫助
    2021-09-09
  • 解析本地方法映射Java層的數(shù)據(jù)類型

    解析本地方法映射Java層的數(shù)據(jù)類型

    這篇文章給大家介紹了本地方法映射Java層的數(shù)據(jù)類型,包括基礎(chǔ)類型映射,引用類型映射等等,對(duì)java層數(shù)據(jù)類型映射相關(guān)知識(shí),感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-03-03
  • java正則表達(dá)式用法大全(深度好文)

    java正則表達(dá)式用法大全(深度好文)

    這篇文章主要給大家介紹了關(guān)于java正則表達(dá)式用法大全的相關(guān)資料,正則表達(dá)式在處理字符串時(shí)非常有用,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • 關(guān)于Java雙大括號(hào){{}}的具體使用

    關(guān)于Java雙大括號(hào){{}}的具體使用

    本文主要介紹了關(guān)于Java雙大括號(hào){{}}的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 詳解Java如何實(shí)現(xiàn)一個(gè)像String一樣不可變的類

    詳解Java如何實(shí)現(xiàn)一個(gè)像String一樣不可變的類

    說(shuō)到?String?大家都知道?String?是一個(gè)不可變的類;雖然用的很多,那不知道小伙伴們有沒有想過(guò)怎么樣創(chuàng)建一個(gè)自己的不可變的類呢?這篇文章就帶大家來(lái)實(shí)踐一下,創(chuàng)建一個(gè)自己的不可變的類
    2022-11-11
  • 跟我學(xué)Java Swing之游戲設(shè)計(jì)(1)

    跟我學(xué)Java Swing之游戲設(shè)計(jì)(1)

    跟我學(xué)Java Swing之游戲設(shè)計(jì)(1)...
    2006-12-12

最新評(píng)論

岚皋县| 永福县| 元氏县| 郴州市| 深水埗区| 赫章县| 芷江| 安乡县| 温泉县| 虹口区| 栾川县| 汉川市| 工布江达县| 泊头市| 恩平市| 象州县| 新化县| 惠水县| 阿坝县| 桃江县| 巨野县| 龙泉市| 宁化县| 嘉义县| 游戏| 特克斯县| 阜平县| 元朗区| 建德市| 二手房| 平邑县| 金秀| 酒泉市| 英德市| 梁山县| 墨江| 丰都县| 虹口区| 湖南省| 保德县| 常熟市|