Spring boot @ConfigurationProperties

来源:互联网 发布:php游戏源代码有什么用 编辑:程序博客网 时间:2024/05/29 03:03

有的时候我们需要将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;@Configurationpublic 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;@Configurationpublic 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:/templatesbeetl.prefix = /beetl.suffix = .btlbeetl.order = 0beetl.contentType = text/html;charset=UTF-8
0 0