zoukankan      html  css  js  c++  java
  • springboot快速入门(二)——项目属性配置(日志详解)

    一、概述

      application.properties就是springboot的属性配置文件

      在使用spring boot过程中,可以发现项目中只需要极少的配置就能完成相应的功能,这归功于spring boot中的模块化配置,在pom.xml中依赖的每个Starter都有默认配置,而这些默认配置足以满足正常的功能开发。

      除此之外,还有application.yml形式的配置文件;对比如下;

    server.port=8080  
    server.session-timeout=30  
    server.context-path=  
    server.tomcat.max-threads=0  
    server.tomcat.uri-encoding=UTF-8  
      
    spring.datasource.url = jdbc:mysql://localhost:3306/spring  
    spring.datasource.username = root  
    spring.datasource.password = root  
    spring.datasource.driverClassName = com.mysql.jdbc.Driver  
    # Specify the DBMS  
    spring.jpa.database = MYSQL  
    # Show or not log for each sql query  
    spring.jpa.show-sql = true  
    # Hibernate ddl auto (create, create-drop, update)  
    spring.jpa.hibernate.ddl-auto = update  
    # Naming strategy  
    spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy  
      
    # stripped before adding them to the entity manager)  
    spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect  
    application.properties
    server:  
      port: 8080  
      session-timeout: 30  
      tomcat.max-threads: 0  
      tomcat.uri-encoding: UTF-8  
      
    spring:  
      datasource:  
        url : jdbc:mysql://localhost:3306/springboot  
        username : root  
        password : root  
        driverClassName : com.mysql.jdbc.Driver  
      jpa:  
        database : MYSQL  
        show-sql : true  
        hibernate:  
          ddl-auto : update  
          naming-strategy : org.hibernate.cfg.ImprovedNamingStrategy  
        properties:  
          hibernate:  
    application.yml

      默认生成的为application.properties

      # 补充springboot日志详解

    二、修改默认配置

      spring-boot自带了很多默认配置,所有默认配置可以参考官方文档:点击查看所有默认配置

      示例:修改端口和context-path:

    server.port=8081
    server.context-path=/demo

      // 新版的IDEA写此配置文件也会给出对应默认配置名称的提示,赞!

      

      当然,通过jar方式运行也可以使用--进行参数设置,这是专门用于对属性文件进行配置的:

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

      当然,properties写起来比较费事,我们推荐的是yml(压ml)形式的配置:

        这里必须提醒,yml配置文件分割处必须有空格:当然IDEA也会帮我们检查yml语法,正确的配置是会高亮的,yml文件本身也会有特殊图标显示的

        

        这里我们就把默认的properties删除了,使用更加简洁的yml配置:

    server:
      port: 8082
      context-path: /demo

        如果已经是properties,可以通过在线工具转换http://www.toyaml.com/

        效果:

        

     三、自定义属性配置

      1.在yml文件中定义:

    salary: 10010
    name: jiangbei

      2.使用@Value注解读取值:

        使用@Value的类如果被其他类作为对象引用,必须要使用注入的方式,而不能new

    package com.example.demo;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * 测试demo的controller
     *
     * @author zcc ON 2018/2/8
     **/
    @RestController
    public class HelloController {
        @Value("${name}")
        private String name;
        @Value("${salary}")
        private Integer salary;
        
        @RequestMapping(value = "/hello", method = RequestMethod.GET)
        public String hello() {
            return "name:" + name + " salary:" + salary;
        }
    }

      页面效果:

      

      // 可以看到,配置文件到属性的过程,会自动进行类型转换

        读取多级属性:

    name:
      first_name: jiangbei
      last_name: z
      @Value("${name.first_name}")
        private String fname;
        @Value("${name.last_name}")
        private String lname;

        属性中引用其他属性:类似shell变量

    name:
      first_name: jiangbei
      last_name: z
      full_name: "full name: ${name.first_name} ${name.last_name}"

        使用bean进行属性映射

        需要特别注意的是bean上面的两个注解:@Componet和@ConfigurationProperties,通过prefix来匹配前缀(类似分组思想),当然也可以

    通过 @ConfigurationProperties(prefix = "master.ds",locations = "classpath:application.properties")  的形式,指定配置文件

    person:
      name: jiangbei
      age: 18
      sex: M
    package com.example.demo.bean;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    /**
     * 映射属性配置的bean
     *
     * @author zcc ON 2018/2/8
     **/
    @ConfigurationProperties(prefix = "person")
    @Component
    public class PersonProp {
        private String name;
        private Integer age;
        private String sex;
        // getter setter未列出
    }
    @RestController
    public class HelloController {
        @Autowired
        private PersonProp person;
    
        @RequestMapping(value = "/hello", method = RequestMethod.GET)
        public String hello() {
            return person.getName();
        }
    }

        多配置文件切换:

          例如生产和开发的配置文件需要切换,那我们只要定义application-xxx.yml,然后在application.yml里面使用spring.profile.active切换即可!

        

        在application.yml中进行配置:

    spring:
      profiles:
        active: dev

        这个时候再在application.yml文件里面写配置的话,dev里面也是可以直接用到的!

       更多属性特征与使用,参考: http://blog.didispace.com/springbootproperties/

  • 相关阅读:
    MySQL学习记录
    Python3玩转儿 机器学习(4)
    Python3玩转儿 机器学习(3)
    C#-WebForm-文件上传-FileUpload控件
    C#将WebBowser控件替换为谷歌内核【转】
    各种【icon】矢量图
    WPF 获取鼠标全局坐标【精简】
    winfrom 的 各种效果【需要新浪帐号查看】
    JS 文字波纹效果【插件】
    C# 窗口抖动
  • 原文地址:https://www.cnblogs.com/jiangbei/p/8432728.html
Copyright © 2011-2022 走看看