springBoot 获取配置文件配置内容

wylc123 1年前 ⋅ 1666 阅读

配置文件 src/main/resources 目录下: book.properties

yuyi.book.name=三国演义

yuyi.book.count=100

一、使用@Value 注解注入属性

package com.yuyi.bean.model;
 
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
 
/**
 *  使用 @Value 注解注入属性值 
 */
@Component
public class BookValue {
    
    @Value("${yuyi.book.name}")
    private String name;
    
    @Value("${yuyi.book.count}")
    private Integer count;
 
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getCount() {
        return count;
    }
    public void setCount(Integer count) {
        this.count = count;
    }
 
}

二、使用 Environment 获取配置信息

package com.yuyi.bean.model;
 
import java.io.UnsupportedEncodingException;
 
import javax.annotation.PostConstruct;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
 
/**
 * 使用 Environment 类获取配置信息
 */
@Component
public class BookEnvironment {
    
    @Autowired
    private Environment env;
 
    private String name;
    
    private Integer count; 
    
    @PostConstruct //注解标注该方法在构造器调用之后自动执行
    public void init() throws UnsupportedEncodingException{
        String strname = env.getProperty("yuyi.book.name");
        String strcount = env.getProperty("yuyi.book.count");
        
        name = strname;
        count = Integer.parseInt(strcount);
    }
 
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getCount() {
        return count;
    }
    public void setCount(Integer count) {
        this.count = count;
    }
    
}

三、使用  @ConfigurationProperties 注解注入配置信息

package com.yuyi.bean.model;
 
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
 
/**
 * 使用 @ConfigurationProperties注入配置信息
 */
@Component
@ConfigurationProperties(prefix = "yuyi.book")
@PropertySource(value = "classpath:book.properties", encoding = "UTF-8")  //配置文件位置, 编码方式
public class BookProperties {
    
    private String name;
    
    private Integer count;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
    public Integer getCount() {
        return count;
    }
    public void setCount(Integer count) {
        this.count = count;
    }
 

注意:

@ConfigurationProperties与静态加载配置文件

因为@ConfigurationProperties只会调用 非静态的set方法,所以我们稍微做一下改动,set方法都换成非静态的就可以了,贴下正确的代码:

@Component
@ConfigurationProperties(prefix = "spring.redis")
public class RedisProperties {

    private static String host;

    private static int port;

    public static String getHost() {
        return host;
    }

    public void setHost(String host) {
        RedisProperties.host = host;
    }

    public static int getPort() {
        return port;
    }

    public void setPort(int port) {
        RedisProperties.port = port;
    }
}

 

更多内容请访问:IT源点

相关文章推荐

全部评论: 0

    我有话说: