美文网首页
Ⅲ.Spring Boot

Ⅲ.Spring Boot

作者: 唐騦忆 | 来源:发表于2020-02-27 17:22 被阅读0次

    一、spring boot优点

    1. 嵌入式servlet,无需打war包
    2. starters自动配置
    3. 无需配置XML,开箱即用

    微服务
    一个应用是一组小型服务,可以通过HTTP进行互通。
    应用模块化,高内聚低耦合,每一个模块都是一个可独立替换和独立升级的单元

    二、配置文件

    application.properties
    application.yml

    2.1 yml基本语法

    k:(空格)v
    以空格的缩进控制层级关系,左对齐数据视为同一层级。
    对大小写敏感。
    server:
    port: 8080
    path: /hello

    1. 值(数字,字符串,布尔)
      k: v
      字符串不必要加引号
      "": 双引号不会转义字符串中的特殊字符
      \n 为 换行
      '': 单引号会转义特殊字符
      \n 为 \n

    2. 对象
      k: v
      依旧是键值对方式
      friends:
      lastname: zhang
      age: 20

    3. 数组(List,Set)
      pets:
      - cat
      - dog
      - pig

    2.2 配置文件处理器

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <version>2.2.2.RELEASE</version>
    </dependency>
    

    导入后yml配置文件会有提示。

    配置文件可加函数或引用

    person.age = ${random.int}
    person.age = ${person.lastname}_dog
    
    person.age = ${person.lastname:hello}_dog
    取不到值,默认为:后值。
    

    2.3 多配置文件

    properties方式
    application-dev.properties
    spring.profiles.active = dev

    yml方式
    使用---分割

    ---
    server: 
      port: 8081
    spring: 
      profiles: 
        active: dev
    ---
    server: 
      port: 8082
    spring: 
      profiles: dev
    

    2.4 配置文件优先级

    根目录/config>根目录>类路径/config>类路径
    springboot会加载所有配置文件,高优先级的配置会覆盖低优先级配置。
    --spring.config.location =
    通过命令行参数改变默认配置文件位置。

    三、注解

    @ConfigurationProperties(prefix = "person")

    自动导入配置文件到相关类中
    批量注入,松散绑定,自动校验(类前@Validated+属性前@Email),不支持表达式,支持复杂类型导入(如map)。
    注意:只有容器中的组件,才能使用容器提供的功能。

    @Component

    注入到容器

    @value

    @value("${person.last-name}")
    @value("#{112}")
    @value("true")
    单个注入,不支持松散绑定(aB=a-b),不支持校验,支持表达式(11
    2),不支持复杂类型封装。

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

    加载指定路径配置文件

    @ImportResource(locations = {"classpath:beans.xml"})

    加载spring的xml配置文件

    @Configuration

    指明当前类是一个配置类

    @Bean
    给容器添加组件,将方法的返回值添加到容器中,容器的组件默认id是方法名。
    

    @debug = true
    打印自动配置报告

    原生注解

    四、自动配置原理

    @EnabelAutoConfiguration
    通过selectImports()方法自动给容器导入一些组件。
    通过寻找XXXAutoConfiguration类,加入到容器中,用他们自动配置。
    一旦配置类生效,配置类就会给容器添加各种组件,这些组件的属性是从对应的properties中获取的,这些类的属性是和配置文件绑定的。

    1. springboot启动时会加载大量配置类
    2. springboot已经写好了这些配置类
    3. 如果自动配置类中没有配置需要组件,就需要自己配置
    4. 给容器自动配置类添加组件的时候,会从properties中获取属性

    XXXAutoConfiguration:自动配置类
    XXXProperties:封装配置文件中的相关属性

    五、日志

    5.1 SLF4J

    日志门面:SLF4J
    日志实现:Logback
    spring 已经默认进行了日志配置

    #日志级别
    logger.trace("这是trace日志");
    logger.debug("这是debug日志");
    logger.info("这是info日志");
    logger.warn("这是warn日志");
    logger.error("这是error日志");
    #spring默认只会输出info及以上级别输出
    #可以在配置文件中进行调整
    logging.level.com.data.migration = trace
    
    #当前磁盘根路径下创建层级文件夹,输出日志spring.log
    logging.path = /spring/log
    
    #输出到根目录指定文件或指定路径文件
    logging.file = spring.log
    logging.file = D:/spring.log
    
    #控制台日志格式
    logging.patern.console = %d{yyyy-MM-dd HH:mm:ss,SSS} [%thread] %-5level %logger{50} - %msg%n
    #文件日志格式
    logging.pattern.file = %d{yyyy-MM-dd HH:mm:ss,SSS} [%thread] %-5level %logger{50} - %msg%n
    

    5.2 自定义配置

    类路径下方日志配置文件logback-spring.xml或logback.xml。
    logback.xml会直接被日志框架识别,spring无法操作。
    logback-spring.xml会被spring识别,可以应用多配置识别
    <springProfile name = "dev">
    <>
    </springProfile>

    5.3 日志切换

    日志切换

    相关文章

      网友评论

          本文标题:Ⅲ.Spring Boot

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