美文网首页
spring boot(四) 配置(properties文件)

spring boot(四) 配置(properties文件)

作者: 张艺 | 来源:发表于2017-10-10 17:31 被阅读27次

配置项分系统默认和自定义、首先来看一下系统默认的配置文件,如图:

配置文件的目录结果

application.properties是默认的配置文件;来看看几种使用方式:

  • 直接引用配置文件中的value
    首先配置文件中定义key=value;
username=123
password=321

创建类

public class DemoConfiguration {
    private String username;
    private String password;
}

将配置文件中的value赋值给username和password;

@Component
public class DemoConfiguration {
    @Value("${username}")
    private String username;
    
    @Value("${password}")
    private String password;
}

修改此前的rest接口,预期结果为浏览器中打印properties文件中配置的 username :123, password:321,来看看是否成功

    @Autowired
    private DemoConfiguration demoConfiguration;

    @RequestMapping("getString")
    public String getResultAsString() {
        String username = demoConfiguration.getUsername();
        String password = demoConfiguration.getPassword();

        return String.format("properties文件中配置的 username :%s, password:%s", username, password);
    }
符合预期
  • 通过前缀自动配置属性值

比如:配置文件如下

book.name=bookName
book.author=bookAuthor

定义Book类,通过自定加载的特性来自动注入配置文件中的Value

@Component
@ConfigurationProperties(prefix = "book")
public class Book {
    private String name;
    private String author;
    
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }
}

定义rest接口:

    @Autowired
    private Book book;
    
    @RequestMapping("getBook")
    public Book getBook() {
        return book;
    }

在浏览器中输入localhost:8080/getBook,预期结果为输出{"name":"bookName","author":"bookAuthor"}

符合预期结果

配置文件中如果配置book.name;实体类中@ConfigurationProperties(prefix = "book"),即配置中key=prefix + 实体类中的field的名称
@ConfigurationProperties标识系统自动从配置文件中加载对应的属性值


  • 自定义配置文件;
    通常为了让代码结构化更清晰,会将配置分类,仅适用一个spring默认的文件肯定是不够的;来看看如何配置自定义的properties文件吧!但是在spring boot(版本1.5.1.RELEASE)以前,原本通过@ConfigurationProperties中的locations可以定义配置文件,但是在1.5.1之后官方就将此属性移除了;

首先创建properties文件 redis.properties:

redis.url=192.168.0.1
redis.port=9000

定义实体类RedisConfiguration

@Component
@ConfigurationProperties(prefix = "redis")
@PropertySource("classpath:/redis.properties")
public class RedisConfiguration {
    private String url;
    private String port;

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getPort() {
        return port;
    }

    public void setPort(String port) {
        this.port = port;
    }
}

定义getRedis接口

    @Autowired
    private RedisConfiguration redisConfiguration;

    @RequestMapping("getRedis")
    public String getRedis() {
        String url = redisConfiguration.getUrl();
        String port = redisConfiguration.getPort();

        return String.format("redis配置文件中 url:%s, port:%s", url, port);
    }

在浏览器中输入localhost:8080/getRedis

符合预期结果

1、特别注意的,经过测试,在自定义的配置文件中出现的key,不能在默认的application.properties文件中出现,否则会优先取application.properties文件中的Value
2、@PropertySource("classpath:/redis.properties")中的文件不能出错,默认会忽略resources的目录
3、@Component注释必须添加,否则无法被spring初始化;

相关文章

网友评论

      本文标题:spring boot(四) 配置(properties文件)

      本文链接:https://www.haomeiwen.com/subject/ugovyxtx.html