SpringBoot14-springboot核心-外部配置,日志配置,Profile配置

一:外部配置

     Spring Boot允许使用properties文件,yaml文件或命令行参数作为外部配置。

     1,命令行参数配置

      Spring Boot可以是基于jar包运行的,打包jar包的程序可以直接通过命令行运行:

      java -jar xx.jar

 

     可以通过以下命令修改Tomcat端口号:

    java -jar  xx.jar  --server.port=9090


     2,常规属性配置

     在Spring Boot里我们只需要在application.properties定义属性,直接使用@Value注入即可。

     示例,在之前的springboot1项目基础上进行如下修改:

     1)修改application.yml,增加属性:

book:
  author: jack
  name: hello world

     2)新建一个Controller

package com.jack.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created by jack on 2017/7/30.
 */
@RestController
public class PropertiesController {
    @Value("${book.author}")
    private String bookAuthor;
    @Value("${book.name}")
    private String bookName;
    @RequestMapping("/property")
    public String helloProperty(){
        return "book name is :"+bookName+" and book author is :"+bookAuthor;
    }
}


   3)运行

   在浏览器输入:http://localhost:8080/property,浏览器输出如下:


   

     3,类型安全的配置(基于properties)

      上例中使用@Value注入每个配置在实际项目中会显得格外麻烦,因为我们的配置通常会是许多个,若使用上面的方式则要使用@Value注入很多次

      Spring Boot还提供了基于类型安全的配置方式,通过@ConfigurationProperties将properties属性和一个Bean及其属性关联,从而实现类型安全的配置。

     修改application.yml,如下:

book:
  author: jack
  name: hello world

author:
  name: jack
  age: 18


   类型安全的Bean,代码如下:

package com.jack.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
/**
 *通过@ConfigurationProperties加装properties文件内的配置,通过prefix属性指定properties的配置
 * 的前缀,通过locations指定properties文件的位置
 */
@ConfigurationProperties(prefix = "author")
public class AuthorSetting {
    /**
     * 姓名
     */
    private String name;
    /**
     * 年龄
     */
    private int age;

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}


测试代码如下:

package com.jack.controller;

import com.jack.config.AuthorSetting;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created by jack on 2017/7/30.
 */
@RestController
public class PropertiesController {
    @Value("${book.author}")
    private String bookAuthor;
    @Value("${book.name}")
    private String bookName;

    @Autowired
    private AuthorSetting authorSetting;

    @RequestMapping("/property")
    public String helloProperty(){
        System.out.println("helloProperty()");
        return "book name is :"+bookName+" and book author is :"+bookAuthor;
    }

    @RequestMapping("/author")
    public String author(){
        return "name: "+authorSetting.getName()+",age: "+authorSetting.getAge();
    }

}

    这里使用post man进行测试接口输入:http://localhost:8080/author,效果如下:




4,日志配置

    spring boot支持Java Util Logging,Log4J,Log4J2和Logback作为日志框架,无论使用哪种日志框架,Spring boot已为当前使用日志框架的控制台输出及文件输出做好了配置,默认情况下,Spring boot使用Logback作为日志框架。

    配置日志级别:

   logging.file=D:/mylog/log.log


   配置日志文件,格式为logging.level.包名=级别:

  logging.level.org.springframework.web=DEBUG



4,Profile配置

    Profile是Spring用来针对不同的环境对不同的配置提供支持,全局Profiel配置使用application-{profile}.properties(如 application-{prod}.properties)

    通过在application.properties中设置spring.profiles.active=prod来指定活动的Profile。

    下面做一个演示,生产prod和开发dev环境,生产环境8080,开发环境9090

    生产和开发环境的配置文件如下:

application-prod.yml如下:

server:
  port: 8080


application-dev.yml如下:

server:
  port: 9090


   修改application.yml代码如下:

spring:
  profiles:
    active: dev


book:
  author: jack
  name: hello world

author:
  name: jack
  age: 18


   上面主要增加了:spring.profiles.active=dev


   运行程序,输出如下:



  修改pring.profiles.active=prod


  输出如下:






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值