Springboot 读取配置文件参数(yml\properties)

2022-06-26 09:58:14

Springboot 读取配置文件的参数,这里介绍2种方式。一种是使用注解@Value,一种是使用属性对应的方式。

(说明:我这里贴出来的配置,里面的参数命名是下划线和驼峰命名混用的,这里只是为了演示一下,我实际使用的过程中,把命名方式都调整成统一的了,配置文件用下划线,代码里面是驼峰。贴出来的命名,是挪用了weibo官方提供的 java SDK示例代码里面的配置,本身就是混用的。)

Springboot默认读取的是application.yml中的,yml文件或者properties文件。如果想要自定义配置文件,可以在application.yml 同级创建自定义yml或者properties文件,必须以application- 开头,然后在application.yml中配置下,多个使用逗号隔开即可。

spring:
  profiles:
    active: dev,weibo

我这里就以weibo的配置为例,配置内容做了处理。我的配置文件是application-weibo.yml,内容如下:

xxx:
  weiboapi:
    client_ID: xxx
    client_SERCRET: xxx
    redirect_URI: xxx
    baseURL: https://api.weibo.com/2/
    accessTokenURL: https://api.weibo.com/oauth2/access_token
    authorizeURL: https://api.weibo.com/oauth2/authorize
    rmURL: https://rm.api.weibo.com/2/
    grant_type: authorization_code

1、使用@Value注解

首先定义WeiboConfig.java

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;


/**
 * <p>
 * Title WeiboConfig
 * </p>
 * <p>
 * Description 微博配置
 * </p>
 *
 * @Author lzh_me@126.com
 * @Date 2021-11-26 8:44
 * @Version 1.0
 */

@Configuration
@Data
@NoArgsConstructor
@AllArgsConstructor
public class WeiboConfig {

    /**
     * AppKey
     */
    @Value("${pomp.weiboapi.client_ID}")
    private String clientId;

    /**
     * AppSecret
     */
    @Value("${pomp.weiboapi.client_SERCRET}")
    private String clientSercret;

    /**
     * 授权回调地址
     */
    @Value("${pomp.weiboapi.redirect_URI}")
    private String redirectURI;

    /**
     * baseURL
     */
    @Value("${pomp.weiboapi.baseURL}")
    private String baseURL;

    /**
     * accessTokenURL
     */
    @Value("${pomp.weiboapi.accessTokenURL}")
    private String accessTokenURL;

    /**
     * authorizeURL
     */
    @Value("${pomp.weiboapi.authorizeURL}")
    private String authorizeURL;

    /**
     * rmURL
     */
    @Value("${pomp.weiboapi.rmURL}")
    private String rmURL;

    /**
     * 请求的类型,填写authorization_code
     */
    @Value("${pomp.weiboapi.grant_type}")
    private String grantType;
}

测试类:

@SpringBootTest
@RunWith(SpringRunner.class)
public class WeiboTest {

    @Resource
    private WeiboConfig weiboConfig;

    @Test
    public void test(){
        String url = weiboConfig.getAccessTokenURL();
        if(null == url){
            System.out.println("null------------------");
        }
        System.out.println(url);
    }
}

2、使用类属性获取

WeiboConfig.java内容:

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;


/**
 * <p>
 * Title WeiboConfig
 * </p>
 * <p>
 * Description 微博配置
 * </p>
 *
 * @Author lzh_me@126.com
 * @Date 2021-11-26 8:44
 * @Version 1.0
 */
@Component
@Data
@NoArgsConstructor
@AllArgsConstructor
@ConfigurationProperties(prefix = "xxx.weiboapi")
public class WeiboConfig {


    /**
     *
     */
    private String clientId;

    /**
     *
     */
    private String clientSercret;

    /**
     *
     */
    private String redirectURI;

    /**
     *
     */
    private String baseURL;

    /**
     *
     */
    private String accessTokenURL;

    /**
     *
     */
    private String authorizeURL;

    /**
     *
     */
    private String rmURL;

    /**
     *
     */
    private String grantType;
}

对应的application-weibo.yml内容:注意这里的参数命名改了。

xxx:
  weiboapi:
    clientId: xxx
    clientSercret: xxx
    redirectURI: xxx
    baseURL: https://api.weibo.com/2/
    accessTokenURL: https://api.weibo.com/oauth2/access_token
    authorizeURL: https://api.weibo.com/oauth2/authorize
    rmURL: https://rm.api.weibo.com/2/
    grantType: authorization_code

测试类同上。

PS:这里是2版配置文件,里面的配置属性命名不一样。

我选用的是@Value注解的方式,这样配置文件的参数命名和java代码里面的命名可以不用一致。

  • 作者:lzh_me
  • 原文链接:https://blog.csdn.net/lvbang_lzt/article/details/121648436
    更新时间:2022-06-26 09:58:14