• 读取properties四种方式


    前言

    在项目开发中经常会用到配置文件,配置文件的存在解决了很大一份重复的工作。今天就分享四种在Springboot中获取配置文件的方式。

    注:前三种测试配置文件为springboot默认的application.properties文件

    [html] view plain copy
     
    1. #######################方式一#########################  
    2. com.battle.type3=Springboot - @ConfigurationProperties  
    3. com.battle.title3=使用@ConfigurationProperties获取配置文件  
    4. #map  
    5. com.battle.login[username]=admin  
    6. com.battle.login[password]=123456  
    7. com.battle.login[callback]=http://www.flyat.cc  
    8. #list  
    9. com.battle.urls[0]=http://ztool.cc  
    10. com.battle.urls[1]=http://ztool.cc/format/js  
    11. com.battle.urls[2]=http://ztool.cc/str2image  
    12. com.battle.urls[3]=http://ztool.cc/json2Entity  
    13. com.battle.urls[4]=http://ztool.cc/ua  
    14.   
    15. #######################方式二#########################  
    16. com.battle.type=Springboot - @Value  
    17. com.battle.title=使用@Value获取配置文件  
    18.   
    19. #######################方式三#########################  
    20. com.battle.type2=Springboot - Environment  
    21. com.battle.title2=使用Environment获取配置文件  

    一、@ConfigurationProperties方式

    自定义配置类:PropertiesConfig.java

    [java] view plain copy
     
    1. import java.io.UnsupportedEncodingException;   
    2. import java.util.ArrayList;   
    3. import java.util.HashMap;   
    4. import java.util.List;   
    5. import java.util.Map;   
    6. import org.springframework.boot.context.properties.ConfigurationProperties;   
    7. //import org.springframework.context.annotation.PropertySource;   
    8. import org.springframework.stereotype.Component;   
    9. /**  
    10. * 对应上方配置文件中的第一段配置  
    11. * @author battle 
    12. * @date 2017年6月1日 下午4:34:18 
    13. * @version V1.0  
    14. * @since JDK : 1.7 */   
    15. @Component   
    16. @ConfigurationProperties(prefix = "com.zyd")   
    17. // PropertySource默认取application.properties   
    18. // @PropertySource(value = "config.properties")   
    19. public class PropertiesConfig {   
    20.     public String type3; public String title3;   
    21.     public Map<String, String> login = new HashMap<String, String>();   
    22.     public List<String> urls = new ArrayList<>();   
    23.     public String getType3() {   
    24.         return type3;   
    25.     }   
    26.     public void setType3(String type3) {  
    27.         this.type3 = type3;   
    28.     }   
    29.     public String getTitle3() {  
    30.         try {   
    31.             return new String(title3.getBytes("ISO-8859-1"), "UTF-8");   
    32.         } catch (UnsupportedEncodingException e) {   
    33.             e.printStackTrace();   
    34.         }   
    35.             return title3;   
    36.         }   
    37.         public void setTitle3(String title3) {   
    38.             this.title3 = title3;   
    39.         }   
    40.         public Map<String, String> getLogin() { return login; }   
    41.         public void setLogin(Map<String, String> login) { this.login = login; }   
    42.         public List<String> getUrls() { return urls; }   
    43.         public void setUrls(List<String> urls) { this.urls = urls; } }   

    程序启动类:Applaction.java

    [java] view plain copy
     
    1. import java.io.UnsupportedEncodingException;  
    2. import java.util.HashMap;  
    3. import java.util.Map;  
    4. import org.springframework.beans.factory.annotation.Autowired;  
    5. import org.springframework.boot.SpringApplication;  
    6. import org.springframework.boot.autoconfigure.SpringBootApplication;  
    7. import org.springframework.web.bind.annotation.RequestMapping;  
    8. import org.springframework.web.bind.annotation.RestController;  
    9. import com.zyd.property.config.PropertiesConfig;  
    10. @SpringBootApplication   
    11. @RestController   
    12. public class Applaction {  
    13.     @Autowired private PropertiesConfig propertiesConfig;  
    14.     /**  
    15.     * 第一种方式:使用`@ConfigurationProperties`注解将配置文件属性注入到配置对象类中  
    16.     * @throws UnsupportedEncodingException  
    17.     * @since JDK 1.7 */  
    18.     @RequestMapping( "/config" ) public Map<String, Object> configurationProperties()  
    19.                                                                                                                                                                                                                                                                                                                                              {  
    20.         Map<String, Object> map = new HashMap<String, Object>();  
    21.         map.put( "type", propertiesConfig.getType3() );  
    22.         map.put( "title", propertiesConfig.getTitle3() );  
    23.         map.put( "login", propertiesConfig.getLogin() );  
    24.         map.put( "urls", propertiesConfig.getUrls() );  
    25.         return(map);  
    26.     }  
    27.     public static void main( String[] args ) throws Exception  
    28.                                                                                                                                                                                                                                                                                                                                              {  
    29.         SpringApplication application = new SpringApplication( Applaction.class );  
    30.         application.run( args );  
    31.     }  
    32. }  



    访问结果:
    {"title":"使用@ConfigurationProperties获取配置文件",
    "urls":["http://ztool.cc","http://ztool.cc/format/js","http://ztool.cc/str2image",
    "http://ztool.cc/json2Entity","http://ztool.cc/ua"],
    "login":{"username":"admin",
    "callback":"http://www.flyat.cc","password":"123456"},
    "type":"Springboot - @ConfigurationProperties"}
    二、使用@Value注解方式
    程序启动类:Applaction.java

    [java] view plain copy
     
    1. import java.io.UnsupportedEncodingException;  
    2. import java.util.HashMap;  
    3. import java.util.Map;  
    4. import org.springframework.beans.factory.annotation.Value;  
    5. import org.springframework.boot.SpringApplication;  
    6. import org.springframework.boot.autoconfigure.SpringBootApplication;  
    7. import org.springframework.web.bind.annotation.RequestMapping;  
    8. import org.springframework.web.bind.annotation.RestController;  
    9. @SpringBootApplication   
    10. @RestController   
    11. public class Applaction {  
    12.     @Value("${com.zyd.type}") private String type;  
    13.     @Value("${com.zyd.title}") private String title;  
    14.     /** * * 第二种方式:使用`@Value("${propertyName}")`注解 *  
    15.      * @throws UnsupportedEncodingException * @since JDK 1.7 */  
    16.     @RequestMapping("/value") public Map<String, Object> value() throws UnsupportedEncodingException {  
    17.         Map<String, Object> map = new HashMap<String, Object>();  
    18.         map.put("type", type);  
    19.         // *.properties文件中的中文默认以ISO-8859-1方式编码,因此需要对中文内容进行重新编码   
    20.         map.put("title", new String(title.getBytes("ISO-8859-1"), "UTF-8"));   
    21.         return map;   
    22.         }   
    23.         public static void main(String[] args) throws Exception {   
    24.             SpringApplication application = new SpringApplication(Applaction.class);  
    25.              application.run(args);   
    26.         } }  


    访问结果:
    {"title":"使用@Value获取配置文件","type":"Springboot - @Value"}

    三、使用Environment
    程序启动类:Applaction.java

    [java] view plain copy
     
    1. import java.io.UnsupportedEncodingException;  
    2. import java.util.HashMap;  
    3. import java.util.Map;  
    4. import org.springframework.beans.factory.annotation.Autowired;  
    5. import org.springframework.boot.SpringApplication;  
    6. import org.springframework.boot.autoconfigure.SpringBootApplication;  
    7. import org.springframework.core.env.Environment;  
    8. import org.springframework.web.bind.annotation.RequestMapping;  
    9. import org.springframework.web.bind.annotation.RestController;  
    10.   
    11. @SpringBootApplication   
    12. @RestController   
    13. public class Applaction {  
    14.     @Autowired private Environment env;  
    15.     /** * * 第三种方式:使用`Environment` * * @author zyd * @throws UnsupportedEncodingException * @since JDK 1.7 */  
    16.     @RequestMapping("/env") public Map<String, Object> env() throws UnsupportedEncodingException {  
    17.         Map<String, Object> map = new HashMap<String, Object>();  
    18.         map.put("type", env.getProperty("com.zyd.type2"));  
    19.         map.put("title", new String(env.getProperty("com.zyd.title2").getBytes("ISO-8859-1"), "UTF-8"));  
    20.         return map;  
    21.     }  
    22.     public static void main(String[] args) throws Exception {  
    23.         SpringApplication application = new SpringApplication(Applaction.class);  
    24.         application.run(args);  
    25.     }  
    26. }  

    访问结果:
    {"title":"使用Environment获取配置文件","type":"Springboot - Environment"}
    四、使用PropertiesLoaderUtils
    app-config.properties

    [html] view plain copy
     
    1. #### 通过注册监听器(`Listeners`) + `PropertiesLoaderUtils`的方式   
    2. com.battle.type=Springboot - Listeners   
    3. com.battle.title=使用Listeners + PropertiesLoaderUtils获取配置文件   
    4. com.battle.name=zyd   
    5. com.battle.address=Beijing   
    6. com.battle.company=in  

    PropertiesListener.java 用来初始化加载配置文件

    [java] view plain copy
     
    1. import org.springframework.boot.context.event.ApplicationStartedEvent;  
    2. import org.springframework.context.ApplicationListener;  
    3. import com.zyd.property.config.PropertiesListenerConfig;  
    4. public class PropertiesListener implements ApplicationListener<ApplicationStartedEvent> {  
    5.     private String propertyFileName;  
    6.     public PropertiesListener(String propertyFileName) {  
    7.         this.propertyFileName = propertyFileName;  
    8.     }  
    9.     @Override public void onApplicationEvent(ApplicationStartedEvent event) {  
    10.         PropertiesListenerConfig.loadAllProperties(propertyFileName);  
    11.     }  
    12. }  

    PropertiesListenerConfig.java 加载配置文件内容

    [java] view plain copy
     
    1. import org.springframework.boot.context.event.ApplicationStartedEvent;  
    2. import org.springframework.context.ApplicationListener;  
    3. import com.zyd.property.config.PropertiesListenerConfig;  
    4. public class PropertiesListener implements ApplicationListener<ApplicationStartedEvent> {  
    5.     private String propertyFileName;  
    6.     public PropertiesListener(String propertyFileName) {  
    7.         this.propertyFileName = propertyFileName;  
    8.     }  
    9.     @Override public void onApplicationEvent(ApplicationStartedEvent event) {  
    10.         PropertiesListenerConfig.loadAllProperties(propertyFileName);  
    11.     }  
    12. }  

    Applaction.java 启动类

    [java] view plain copy
     
    1. import java.io.UnsupportedEncodingException;  
    2. import java.util.HashMap;  
    3. import java.util.Map;  
    4. import org.springframework.boot.SpringApplication;  
    5. import org.springframework.boot.autoconfigure.SpringBootApplication;  
    6. import org.springframework.web.bind.annotation.RequestMapping;  
    7. import org.springframework.web.bind.annotation.RestController;  
    8. import com.zyd.property.config.PropertiesListenerConfig;  
    9. import com.zyd.property.listener.PropertiesListener;  
    10.   
    11. @SpringBootApplication @RestController public class Applaction {  
    12.     /** * * 第四种方式:通过注册监听器(`Listeners`) + `PropertiesLoaderUtils`的方式 * * @author zyd * @throws UnsupportedEncodingException * @since JDK 1.7 */  
    13.     @RequestMapping("/listener") public Map<String, Object> listener() {  
    14.         Map<String, Object> map = new HashMap<String, Object>();  
    15.         map.putAll(PropertiesListenerConfig.getAllProperty());  
    16.         return map;  
    17.     }  
    18.     public static void main(String[] args) throws Exception {  
    19.         SpringApplication application = new SpringApplication(Applaction.class);  
    20.         // 第四种方式:注册监听器 application.addListeners(new PropertiesListener("app-config.properties")); application.run(args); } }  

    访问结果:

    [java] view plain copy
     
        1. {"com.battle.name":"zyd",  
        2. "com.battle.address":"Beijing",  
        3. "com.battle.title":"使用Listeners + PropertiesLoaderUtils获取配置文件",  
        4. "com.battle.type":"Springboot - Listeners",  
        5. "com.battle.company":"in"}

    https://blog.csdn.net/qq496013218/article/details/75146757#

  • 相关阅读:
    在家工作,10招助你效率、生活两不误
    SQL Server智能感知如何更新
    博客园文章《我记录,故我在》读后感
    Python 协程
    Python 用多线程上传和下载文件
    Python 变量交换
    Python 将文件重新命名
    Python ftplib模块
    Python ftplib模块
    Python 函数作为返回值
  • 原文地址:https://www.cnblogs.com/globalcoding/p/13359196.html
Copyright © 2020-2023  润新知