SpringBoot2学习笔记(二) 配置

一.Properties与Yaml

SpringBoot支持properties与yaml两种配置文件application.properties/application.yml

yaml简单使用

1.yaml简介

yaml是以数据为中心的,比json,xml更适合做配置文件

2.yaml基本语法

k: v:形式的键值对,:后面必须有空格
以空格缩进来控制层级关系
大小写敏感

例子:

server:
  port: 8081 # 设置默认端口号
  servlet:
    path: /init

值的写法

k: v 直接书写

【字符串默认不用加上单引号或者双引号】
"":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
'':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据

对象

k: v:在下一行来写对象的属性和值的关系

例如:

        persion:
          name: zhangsan
          age: 10

行内写法:

persion: {name: zhangsan,age: 10}

数组(List,Set,Map)

普通数组,List,Set 使用 -值 来表示数组中的一个元素

arrays:
  - arrays1
  - arrays2
  - arrays3

Map使用k: v的形式来表示

map:
  k1: v1
  k2: v2
  k3: v3

使用配置文件注入

在pom.xml引入依赖,用于注释处理器生成自己的元数据

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

实体类:

/**
 * persion类
 */
@Component
@ConfigurationProperties(prefix = "persion")
public class Persion {

    private String name;
    private int age;
    private boolean isMan;
    private Date birth;

    private String[] hobbys;
    private Map<String,String> skills;
    private List<String> enjoys;

    // 省略getter setter toString

}

yaml配置

persion:
  name: zhangsan
  age: 20
  isMan: true
  birth: 1997/11/12
  hobbys:
    - 篮球
    - 足球
    - 乒乓球
  skills:
    java: javase
    python: ai
  enjoys:
    - eating
    - running
    - playgames

测试类

    @Autowired
    Persion persion;

    @Test
    public void contextLoads() {
        System.out.println(persion);
    }

结果:

...
...
2018-07-18 11:22:23.818  INFO 6528 --- [           main] com.fjut.InitTest                        : Started InitTest in 2.896 seconds (JVM running for 4.389)
Persion{name='zhangsan', age=20, isMan=false, birth=Wed Nov 12 00:00:00 CST 1997, hobbys=[篮球, 足球, 乒乓球], skills={java=javase, python=ai}, enjoys=[eating, running, playgames]}
2018-07-18 11:22:24.631  INFO 6528 --- [       Thread-2] o.s.w.c.s.GenericWebApplicationContext   : Closing org.springframework.web.context.support.GenericWebApplicationContext@38467116: startup date [Wed Jul 18 11:22:21 CST 2018]; root of context hierarchy

yaml语法教程
http://www.ruanyifeng.com/blog/2016/07/yaml.html

二.服务器配置

更改端口:

server.port=8081

更改上下文访问路径,SpringBoot默认范文路径为“/”:

server.servlet.context-path=/base

常见的服务器配置

server.port:SpringBoot监听端口
server.error.path:错误处理路径
server.servlet.context-path:配置SpringBoot默认上下文路径

三.配置启动信息

Spring的启动信息是可以进行配置的

默认情况
这里写图片描述

可以在类路径下添加banner.txt来更改SpringBoot的启动信息
banner.txt

//                       .::::.
//                     .::::::::.
//                    :::::::::::
//                 ..:::::::::::'
//              '::::::::::::'
//                .::::::::::
//           '::::::::::::::..
//                ..::::::::::::.
//              ``::::::::::::::::
//               ::::``:::::::::'        .:::.
//              ::::'   ':::::'       .::::::::.
//            .::::'      ::::     .:::::::'::::.
//           .:::'       :::::  .:::::::::' ':::::.
//          .::'        :::::.:::::::::'      ':::::.
//         .::'         ::::::::::::::'         ``::::.
//     ...:::           ::::::::::::'              ``::.
//    ```` ':.          ':::::::::'                  ::::..
//                       '.:::::'                    ':'````..
//

                     ____          _
                    / ___'_ __ _ _(_)_ __  __ _
                    \___ | '_ | '_| | '_ \/ _` |
                     ___)| |_)| | | | | || (_| |
                    |____| .__|_| |_|_| |_\__, |
                         |_|               |___/

启动结果:
这里写图片描述

不仅可以使用文字,也可使用banner.gif或者banner.png/.jpg,控制台会自动将图片转化为Ascii字符打印

四.配置浏览器显示ico

我们可以自定义浏览图标:
这里写图片描述

步骤:
将图标命名为favicon.ico,丢入resources中即可
这里写图片描述
运行:
这里写图片描述

五.日志配置

定义日志级别

日志级别 ERROR WARN DEBUF INFO TRACE 级别从高到低

# 输出日志级别 ERROR WARN DEBUF INFO TRACE,日志只会打印当前级别,以及高于当前级别的日志
logging.level.root=info

输出日志到文件

# 输出日志到文件
logging.file=/my.log

定义日志输出格式

输出到控制台日志格式:

logging.pattern.console=【%level %date %logger %thread %M %L %m%n

输出到日志文件的日志格式:

# 定义输出到文件的日志格式
logging.pattern.file=【%level %date %logger %thread %M %L %m%n

日志格式基本参数

属性 内容
%level 表示输出日志级别
%date 表示日期发生时的时间
%logger 用于输出Logger名字,包名+类名,{n}限定输出长度
%thread 当前线程名
%M 日志发生时方法的名字
%L 日志调用所在代码行
%m 日志消息
%n 日志换行

六.Enviroment

Enviroment是一个通用的读取应用程序运行时环境变量的类,可以读取application.properties,命令行输入参数,系统属性,操作系统变量等。可以通过Spring容器自动注入

//在application.properties中添加persion.say=HelloWorld

//测试
@Autowired
Environment environment;

@Test
public void contextLoads() {
    System.out.println(environment.getProperty("persion.say"));
}

//结果
...
2018-07-18 12:54:57.697  INFO 5724 --- [           main] c.lgx.SpringBoot01BaseApplicationTests   : Started SpringBoot01BaseApplicationTests in 2.854 seconds (JVM running for 4.234)
HelloWorld
2018-07-18 12:54:58.120  INFO 5724 --- [       Thread-3] o.s.w.c.s.GenericWebApplicationContext   : Closing org.springframework.web.context.support.GenericWebApplicationContext@38cee291: startup date [Wed Jul 18 12:54:55 CST 2018]; root of context hierarchy

七.@Value与@ConfigurationProperties

这里写图片描述

八.@PropertySource,@ImportResource,@Bean

@PropertySource:加载指定的配置文件;

@PropertySource(value = {"classpath:xxx.properties"})

@ImportResource:导入Spring的配置文件,让配置文件里面的内容生效;
例如:

@ImportResource(locations = {"classpath:beans.xml"})
//导入Spring的配置文件让其生效

SpringBoot推荐给容器中添加组件的方式:推荐使用全注解配置类的方式
1、配置类@Configuration——>Spring配置文件
2、使用@Bean给容器中添加组件

/**
 * @Configuration
 * 用来标识这是一个配置类
 */
@Configuration
public class Myconfig {

    /**
     * 使用配置类就如同较早的xml的配置方式
     * 
     * <beans>
     *      <bean id="hello" class="xxx.Hello"></bean>
     * </beans>
     *
     * id 就相当于方法名
     * class 相当于返回值类型
     * 使用 @Bean 标签将它扫描到容器中
     */
    @Bean
    public Hello hello() {
        return new Hello();
    }

}

九.Profile

我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml,它用于多环境配置。
默认使用application.properties的配置;
这里写图片描述

激活指定profile

1.在配置文件中指定激活的环境

# 激活application-dev.properties配置文件
spring.profiles.active=dev

2.使用命令行激活

java -jar xxxx-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;

3.使用虚拟机参数

-Dspring.profiles.active=dev

十.SpringBoot自动装配

这里写图片描述

1).SpringBoot启动时加载住配置类,开启@EnableAutoConfiguration,自动加载组件
2).根据当前不同的条件判断,决定这个配置类是否生效
3)生效的配置类根据每个Bean不同的条件判断,决定是否把当前Bean扫入容器中

十一.自制SpringBoot starter

猜你喜欢

转载自blog.csdn.net/l1336037686/article/details/81093629