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;
@Configuration
@Data
@NoArgsConstructor
@AllArgsConstructor
public class WeiboConfig {
@Value("${pomp.weiboapi.client_ID}")
private String clientId;
@Value("${pomp.weiboapi.client_SERCRET}")
private String clientSercret;
@Value("${pomp.weiboapi.redirect_URI}")
private String redirectURI;
@Value("${pomp.weiboapi.baseURL}")
private String baseURL;
@Value("${pomp.weiboapi.accessTokenURL}")
private String accessTokenURL;
@Value("${pomp.weiboapi.authorizeURL}")
private String authorizeURL;
@Value("${pomp.weiboapi.rmURL}")
private String rmURL;
@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;
@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代码里面的命名可以不用一致。



