springboot 2.1 实践教程(三)-相关配置之.properties格式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/java_cxrs/article/details/89067688

Spring Boot允许您外部化配置,以便您可以在不同的环境中使用相同的应用程序代码;可以轻松访问属性文件中定义的属性。您可以使用属性文件,YAML文件,环境变量和命令行参数来外部化配置。属性值可以通过直接注射到你的bean @Value注释,通过Spring的访问Environment抽象,或者通过@ConfigurationProperties注解绑定到对象上。

Spring Boot 配置属性文件支持两种格式,一种是 .properties文件,另一种是.yml文件

我们后续的学习主要是这两种文件格式的配置方法,本节主要讲.properties文件的配置。

  • application.properties配置自定义属性

@Value

在resources目录下新建application.properties

设置属性name=testnamevalue

我们如何在程序中获取这个属性值呢?

创建类MyApplication,并执行代码后,在浏览器输入http://localhost:8080/

具体代码如下:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@EnableAutoConfiguration
public class MyApplication {

    @Value("${name}")
    String name;
    @RequestMapping("/")
    String home() {

        System.out.println(name);
        return name;
    }
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }

}

我们可以看到在类中定义了一个name属性,在这个属性上增加了@value注解,当我们运行程序后,在浏览器中我们发现取到了name属性值testname。因此我们可以发现在Sring Boot程序中获取属性文件的值可以通过@Value注解获取。

基于对象方式的读取配置文件-@ConfigurationProperties

在我们使用@value时会发现,有时候会很麻烦,尤其是在多个属性或者数据本质上是分层的情况下。

例如下面这种配置

jdbc.name=username

jdbc.password=123456

jdbc.address=127.0.0.1

创建实体装载相应的属性值

package org.learn.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix="jdbc")
public class JdbcBean {
    private String name;
    private String password;
    private String address;

    public String getName() {
        return name;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

创建Controller在程序中获取上面的类

package org.learn.controller;

import org.learn.bean.JdbcBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class JdbcController {

    @Autowired
    JdbcBean jdbcBean;
    @RequestMapping("/")
    String home() {
        String str = jdbcBean.getName()+"_"+jdbcBean.getPassword()+"_"+jdbcBean.getAddress();
        return str;
    }
}

执行Main方法,启动程序后输入 http://localhost:8080/

我们可以看到浏览器输出了返回的数据。已经从配置文件中获取到了值。

  • application.properties配置常用配置

 在application.properties除了可以配置我们自定义的属性外,还可以配置一些系统的基本配置项。例如:

server.port=8888 :表示配置端口

server.context-path  表示自定义上下文路径

server.tomcat.uri-encoding = UTF-8 表示用于解码URI的字符编码。

spring.http.encoding.charset = UTF-8 #HTTP请求和响应的字符集。如果未明确设置,则添加到“Content-Type”头。

此时我们再次启动程序后,请求的地址端口不再是8080,而是8888了。具体其他相关常用配置可自行百度。

猜你喜欢

转载自blog.csdn.net/java_cxrs/article/details/89067688