zoukankan      html  css  js  c++  java
  • Spring Boot 配置分析

      回顾一下采用SSM开发项目时,项目中会存在多个配置文件,比如web.xml,配置Spring相关的applicationContext-springmvc.xml, applicationContext-dao.xml等,对于应用自身的配置,甚至还需要编写专门的代码去读取这些配置文件中的参数。在Spring Boot中,简化了Spring相关配置的管理和读取,只需要一个application.properties文件,SpringBoot提供了多种读取配置文件的方式。

    配置Spring Boot

    配置服务器端口号

    Spring Boot默认启动端口是8080端口,可以通过在application.properties中重新配置来修改默认端口号,需要添加配置属性server.port:

    server.port=8088

    也可以再命令行中指定启动端口号,只需要一条命令:

    java -jar xxx.jar --server.port=8088

    即可将xxx.jar应用的启动端口号修改为为8088,尝试通过http://localhost:8088/demo 访问应用.

    日志配置

    在SpringBoot中,默认情况下不需要对日志做额外的配置已经可以使用自带的日志,Spring Boot默认使用LogBack来打印日志。

    默认日志格式如上,日志每行内容格式为:

      1. 日期和时间: 格式yyyy-mm-dd hh:mm:ss.SSS

      2. 日志级别:按级别从高到低依次为: fatal,error,warn,info,debug,trace

      3. 进程id:Spring Boot应用的进程Id

      4. --- :分隔符 分隔具体的日志消息

      5. [xxx]:线程名称  

      6. 类名:

      7. 消息体:

    默认情况下,只要Info级别以上的日志信息才会打印到控制台,也可以自己设置日志输出级别,需要在application.properties配置文件中配置logging.level.root属性,如:

    logging.level.root=trace

    同样也可以通过命令中执行,开发中可通过参数—debug将日志界别调整为debug级别:

    java -jar xxx.jar –debug

    Spring Boot默认并没有将日志输出到文件(指定输出文件名),可以在application.properties中指定日志输出:

    logging.file= log        //日志输出到应用运行的根目录下log文件中
    
    logging.file=d:/logs/log //指定日主输入到d盘logs文件夹下log文件中

    或者通过logging.path属性设置(指定输出目录)

    logging.path=d:/logs     //日志输出到d盘logs文件夹下spring.log文件中(默认文件名spring.log)

    logging.file和logging.path属性不能同时使用,如果同时使用,只有logging.file生效

    无论采用上面那种方式记录日志文件,当日志文件到达10MB的时候,会自动重新生成一个新日志文件

    SpringBoot也支持对控制台日志输出和文件输出进行格式空直,application.properties配置代码如下:

    logging.pattern.console= %level %date{HH:mm:ss} %logger{20}.%M %L :%m%n
    logging.pattern.file = %level %date{ISO8601} [%thread] %logger{20}.%M %L :%m%n

      1. %level :表示输出日志级别

      2. %date :表示日志产生时间,%date{ISO8601}表示标准日期格式

      3. %logger:用于输出Logger名称,包括报名+类名,{n}:限制长度

      4. %thread:当前线程

      5. %M: 产生日志所在的方法名

      6. %L:日志调用所在额代码行,(获取代码行对性能有消耗,生产环境不建议使用此参数)

      7. %m:日志消息具体类容

      8. %n:日志换行

    Spring Boot支持多种日志框架,如果需要自定义日志配置,可以通过在resources目录下新建logback-spring.xml来对Logback进行更详细的配置,其他日志框架也一样。

    读取应用配置

      可以在应用中读取application.properties文件中的配置,Spring Boot提供了三种方式,通过通用的Enviroment类、通过key-value方式获取到application.properties中的值、也可以通过@Value注解自动注入属性值。

    通过Environment类读取

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

    @Autowired
    private Environment env;
    
    @RequestMapping("/demo")
    public String demo() {
    //读取application.properties配置中端口号
      System.out.print(env.getProperty("server.port",Integer.class));
        return "Spring Boot Demo";
    }

    通过@Value注解读取

    可以通过@Value注解,直接将配置信息注入到Spring管理的Bean中:

    @Value("${server.port}")
    private String port;
    
    @RequestMapping(
    "/demo2") public String demo2() { System.out.print("端口号:"+port); return "Spring Boot Demo 修改"; }

    @Value注解并不能在任何Spring管理的Bean中使用,因为@Value本身是通过AutowiredAnnotationBeanPostProcrssor实现的,是BeanPostPrcessor接口的实现类,因此任何BeanPostProcessor和BeanFactoryPostProcessor的子类中都不能使用@Value来注入属性,因为这个时候@Value还没有被处理。

    @Value注解还支持SpEL表达式,如果属性不存在,可以赋值默认值:

    @Value("${server.title:默认值}")
    private String title;

    通过@ConfigurationProperties注解

    使用@ConfigurationProperties注解可将一些列配置属性映射到一个自定义类中,方便开发中按分类读取,比如在application.properties中添加一下配置

    com.sl.name=test
    com.sl.password=1111

    实现步骤

    1.自定义配置类

    @Component
    //@PropertySource(value="classpath:/application.properties") //指定绑定哪个资源文件,这里的application.properties文件是springboot默认的资源文件,是可以不用指定的,如果是自定义的资源文件,需要绑定
    @ConfigurationProperties(prefix = "com.sl") //需要映射的属性浅醉
    public class PropertiesConfig {
        private String name;
        private String password;
    
        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;
        }
    }

    2.pomxml添加依赖项

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
    </dependency>
    @Autowired
    private PropertiesConfig config;
    
    @RequestMapping(
    "/demo3") public String demo3() { System.out.print(config.getName()); System.out.print(config.getPassword()); return "Spring Boot Demo"; }

    @ConfigurationProperties注解的类,会自动将“-”、“_”去掉,转化成java命名规范,比如讲context-path配置映射到属性contextPath上。

    @ConfigurationProperties和@Value功能相似,ConfigurationProperties可以将一组属性统一管理,@Value的优是支持SpEL表达式。

     

  • 相关阅读:
    jacob使用入门及问题解析
    java通过jacob来读取word转换为htm格式
    Java操作Microsoft Word之jacob
    将一个项目导入到另一个项目里
    N个富文本编辑器/基于Web的HTML编辑器
    VirtualBox虚拟机网络设置(四种方式)
    (重置adb.exe)android关于The connection to adb is down, and a severe error has occured.这个问题的解决办法
    对java3d的位置理解
    作为Web开发人员,我为什么喜欢Google Chrome浏览器
    非阻塞同步机制与CAS操作
  • 原文地址:https://www.cnblogs.com/ashleyboy/p/9388131.html
Copyright © 2011-2022 走看看