网站链接: 我爱捣鼓
当前位置: 首页 > web开发 > JAVA

如何通过@ConfigurationProperties注解读取properties文件属性?

2022/11/21 20:32:28

java的springboot项目读取properties文件属性有很多种方式,今天我们介绍通过@ConfigurationProperties注解来读取properties文件属性。我们通过两个例子来看看具体如何实现?例子1 在application.properties文件中添加属性my.name=lisimy.old=19 通过@Conf…

        java的springboot项目读取properties文件属性有很多种方式,今天我们介绍通过@ConfigurationProperties注解来读取properties文件属性。我们通过两个例子来看看具体如何实现?

  • 例子1

        在application.properties文件中添加属性

my.name=lisi
my.old=19

        通过@ConfigurationProperties注解,把对应的属性编写对应的配置类

@Component
@ConfigurationProperties(prefix = "my")
public class PropertiesConfig {
    private String name;
    private int old;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getOld() {
        return old;
    }
    public void setOld(int old) {
        this.old = old;
    }
}
@RestController
@RequestMapping(value = "/my")
@ConfigurationProperties(prefix = "my")
public class MyController {  
    private String name;
    private int old;
    @Autowired
    private PropertiesConfig  config;
    @RequestMapping(value = "/test4")
    public String test4() {
        return "my name is " + config.getName() + config.getOld();
    }
}
  • 例子2

        Properties配置文件的内容如下:

com.zyd.type3=Springboot - @ConfigurationProperties
com.zyd.title3=使用@ConfigurationProperties获取配置文件
#map
com.zyd.login[username]=zhangdeshuai
com.zyd.login[password]=zhenshuai
com.zyd.login[callback]=http://www.flyat.cc
#list
com.zyd.urls[0]=http://ztool.cc
com.zyd.urls[1]=http://ztool.cc/format/js
com.zyd.urls[2]=http://ztool.cc/str2image
com.zyd.urls[3]=http://ztool.cc/json2Entity
com.zyd.urls[4]=http://ztool.cc/ua

        @ConfigurationProperties方式

        自定义配置类:PropertiesConfig.java


package com.zyd.property.config;
 
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import org.springframework.boot.context.properties.ConfigurationProperties;
//import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
 
/**
 * 对应上方配置文件中的第一段配置
 */
@Component
@ConfigurationProperties(prefix = "com.zyd")
// PropertySource默认取application.properties
// @PropertySource(value = "config.properties")
public class PropertiesConfig {
 
  public String type3;
  public String title3;
  public Map<String, String> login = new HashMap<String, String>();
  public List<String> urls = new ArrayList<>();
 
  public String getType3() {
    return type3;
  }
 
  public void setType3(String type3) {
    this.type3 = type3;
  }
 
  public String getTitle3() {
    try {
      return new String(title3.getBytes("ISO-8859-1"), "UTF-8");
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }
    return title3;
  }
 
  public void setTitle3(String title3) {
    this.title3 = title3;
  }
 
  public Map<String, String> getLogin() {
    return login;
  }
 
  public void setLogin(Map<String, String> login) {
    this.login = login;
  }
 
  public List<String> getUrls() {
    return urls;
  }
 
  public void setUrls(List<String> urls) {
    this.urls = urls;
  }
 
}

        程序启动类:Applaction.java


package com.zyd.property;
 
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import com.zyd.property.config.PropertiesConfig;
 
/**
 * @author <a href="mailto:yadong.zhang0415@gmail.com" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >yadong.zhang</a>
 * @date 2017年6月1日 下午3:49:30 
 * @version V1.0
 * @since JDK : 1.7
 */
@SpringBootApplication
@RestController
public class Applaction {
 
  @Autowired
  private PropertiesConfig propertiesConfig;
 
  /**
   * 
   * 第一种方式:使用`@ConfigurationProperties`注解将配置文件属性注入到配置对象类中
   * 
   * @author zyd
   * @throws UnsupportedEncodingException
   * @since JDK 1.7
   */
  @RequestMapping("/config")
  public Map<String, Object> configurationProperties() {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("type", propertiesConfig.getType3());
    map.put("title", propertiesConfig.getTitle3());
    map.put("login", propertiesConfig.getLogin());
    map.put("urls", propertiesConfig.getUrls());
    return map;
  }
 
  public static void main(String[] args) throws Exception {
    SpringApplication application = new SpringApplication(Applaction.class);
    application.run(args);
  }
}

        访问结果:

{"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":"zhangdeshuai","callback":"http://www.flyat.cc","password":"zhenshuai"},"type":"Springboot - @ConfigurationProperties"}

        通过以上内容我们知道了java springboot项目中如何通过@ConfigurationProperties注解读取properties文件属性?感谢您访问“我爱捣鼓(www.woaidaogu.com)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!

相关资讯

  • springboot项目设置session生命周期时间的几种方法?

    java开发的springboot项目设置session生命周期时间的方法有三种,今天我们就来说说这三种方法。一丶修改Tomcat配置web.xml文件 在Tomcat服务器对应conf配置文件夹下的web.xml文件中修改<session-time-out></session-time-out>中的值. Tomcat默…

    2022/11/12 12:35:20
  • 图文教程一步一步教你在​idea中使用svn如何创建分支?

    我们在用idea开发java项目时需要通过svn创建项目分支,这样更高效率的开发新的项目,今天我们就通过图文教程一步一步教你idea中如何创建分支?第一步第二步第三步 通过以上内容我们知道了在idea中使用svn如何创建分支。感谢您访问“我爱捣鼓(www.woaidaogu.com)”…

    2022/11/12 12:23:28
  • java函数中如何返回多个值?

    我们一般在写java函数时只会返回一个值,但有时我们需要在函数中返回多个值应该怎么办呢?使用数组 数组可用于返回基本数据类型和引用数据类型。 例如,下面的getCoordinates方法返回double数组:double[] getCoordinatesDoubleArray() { double[] coordi…

    2022/11/8 22:08:01