您的位置:首页 > 编程语言 > Java开发

Spring boot @ConfigurationProperties

2017-01-21 19:27 369 查看
有的时候我们需要将properties封装成一个bean,然后访问属性的时候就可以直接从bean手里拿。

@ConfigurationProperties的作用就是这个。

拿beetl举个例子,beetl如果使用@value的方式进行获取就是:

BeetlConfig.java

import java.io.IOException;

import org.beetl.core.resource.WebAppResourceLoader;
import org.beetl.ext.spring.BeetlGroupUtilConfiguration;
import org.beetl.ext.spring.BeetlSpringViewResolver;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternUtils;

@Configuration
public class BeetlConfigFactory{

@Value(value = "${spring.beetl.prefix}")
private String prefix;

@Value(value = "${spring.beetl.suffix}")
private String suffix;

@Value(value = "${spring.beetl.content.type}")
private String contentType;

@Value(value = "${spring.beetl.root}")
private String root;

@Value(value = "${spring.beetl.order}")
private int order;

@Bean(initMethod = "init", name = "beetlConfig")
public BeetlGroupUtilConfiguration getBeetlGroupUtilConfiguration() {
BeetlGroupUtilConfiguration beetlGroupUtilConfiguration = new BeetlGroupUtilConfiguration();
ResourcePatternResolver patternResolver = ResourcePatternUtils.getResourcePatternResolver(new DefaultResourceLoader());
try {
// WebAppResourceLoader 配置root路径是关键
WebAppResourceLoader webAppResourceLoader = new WebAppResourceLoader(patternResolver.getResource(root).getFile().getPath());
beetlGroupUtilConfiguration.setResourceLoader(webAppResourceLoader);
} catch (IOException e) {
e.printStackTrace();
}
//读取配置文件信息
return beetlGroupUtilConfiguration;
}

@Bean(name = "beetlViewResolver")
public BeetlSpringViewResolver getBeetlSpringViewResolver(@Qualifier("beetlConfig") BeetlGroupUtilConfiguration beetlGroupUtilConfiguration) {
BeetlSpringViewResolver beetlSpringViewResolver = new BeetlSpringViewResolver();
beetlSpringViewResolver.setPrefix(prefix);
beetlSpringViewResolver.setSuffix(suffix);
beetlSpringViewResolver.setContentType(contentType);
beetlSpringViewResolver.setOrder(order);
beetlSpringViewResolver.setConfig(beetlGroupUtilConfiguration);
return beetlSpringViewResolver;
}


而如果使用@ConfigurationProperties。

BeetlProperties .java:

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix="beetl",locations = "classpath:beetl.properties")
public class BeetlProperties {

private String root;

private String prefix;

private String suffix;

private int order;

private String contentType;

private String cofig;

public String getRoot() {
return root;
}

public void setRoot(String root) {
this.root = root;
}

public String getPrefix() {
return prefix;
}

public void setPrefix(String prefix) {
this.prefix = prefix;
}

public String getSuffix() {
return suffix;
}

public void setSuffix(String suffix) {
this.suffix = suffix;
}

public int getOrder() {
return order;
}

public void setOrder(int order) {
this.order = order;
}

public String getContentType() {
return contentType;
}

public void setContentType(String contentType) {
this.contentType = contentType;
}

public String getCofig() {
return cofig;
}

public void setCofig(String cofig) {
this.cofig = cofig;
}

}


BeetlConfig.java:

import java.io.IOException;

import org.beetl.core.resource.WebAppResourceLoader;
import org.beetl.ext.spring.BeetlGroupUtilConfiguration;
import org.beetl.ext.spring.BeetlSpringViewResolver;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternUtils;

import com.shw.netdisk.config.BeetlProperties;

@Configuration
public class BeetlConfigFactory{

@Autowired
private BeetlProperties beetlProperties;

@Bean(initMethod = "init", name = "beetlConfig")
public BeetlGroupUtilConfiguration getBeetlGroupUtilConfiguration() {
BeetlGroupUtilConfiguration beetlGroupUtilConfiguration = new BeetlGroupUtilConfiguration();
ResourcePatternResolver patternResolver = ResourcePatternUtils.getResourcePatternResolver(new DefaultResourceLoader());
try {
// WebAppResourceLoader 配置root路径是关键
WebAppResourceLoader webAppResourceLoader = new WebAppResourceLoader(patternResolver.getResource(beetlProperties.getRoot()).getFile().getPath());
beetlGroupUtilConfiguration.setResourceLoader(webAppResourceLoader);
} catch (IOException e) {
e.printStackTrace();
}
//读取配置文件信息
return beetlGroupUtilConfiguration;
}

@Bean(name = "beetlViewResolver")
public BeetlSpringViewResolver getBeetlSpringViewResolver(@Qualifier("beetlConfig") BeetlGroupUtilConfiguration beetlGroupUtilConfiguration) {
BeetlSpringViewResolver beetlSpringViewResolver = new BeetlSpringViewResolver();
beetlSpringViewResolver.setPrefix(beetlProperties.getPrefix());
beetlSpringViewResolver.setSuffix(beetlProperties.getSuffix());
beetlSpringViewResolver.setContentType(beetlProperties.getContentType());
beetlSpringViewResolver.setOrder(beetlProperties.getOrder());
beetlSpringViewResolver.setConfig(beetlGroupUtilConfiguration);
return beetlSpringViewResolver;
}

}


beetl.properties:

beetl.root = classpath:/templates
beetl.prefix = /
beetl.suffix = .btl
beetl.order = 0
beetl.contentType = text/html;charset=UTF-8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: