接着昨天的项目继续。

项目GitHub:SpringBoot-SpringCloud GitHub地址

主类没有变动,这里就不贴了。

package com.server.vo;

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

/**
 * 在配置文件中配置初始值,通过映射自动加载
 * <p>
 * 设置配置文件的路径,并设定字符集
 * <p>
 * 通过@ConfigurationProperties加载properties文件内的配置
 * 通过prefix属性指定properties配置的前缀
 * <p>
 * Component,将普通POJO实例化到Spring容器中
 *
 * @author CYX
 * @create 2018-07-02-19:44
 */
@PropertySource(value = "classpath:application.properties", encoding = "UTF-8")
@ConfigurationProperties(prefix = "person")
@Component
public class PersonVO {

    private String name;
    private Integer age;

    @Override
    public String toString() {
        return "PersonVO{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

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

vo对象,通过@PropertySource加载properties配置文件。

通过@ConfigurationProperties中prefix的配置,加载相对应的配置节点参数。

@Component注解,将VO对象实例化到Spring容器中。


看下application.properties配置文件:

#修改端口号
server.port=9000

#项目发布根路径(上下文路径)
server.servlet.context-path=/sp-demo

#自定义logback配置文件
logging.config=classpath:conf/logback-config.xml
#SpringBoot日志设置
#logging.file=./log/01-springboot-demo.log
#logging.level.root=info

person.name=CYX
person.age=2000

这里配置了自定义的logback配置文件的路径,以及PersonVo类对应的配置信息。

看下logback自定义的配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="30 seconds" debug="false">

    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <!--定义日志文件的存储地址-->
    <property name="LOG_HOME" value="./log"/>

    <!-- 彩色日志 -->
    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
    <!-- 彩色日志格式 -->
    <property name="CONSOLE_LOG_PATTERN"
              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    <!-- Console 输出设置 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder charset="UTF-8">
            <!--  显示毫秒数
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>-->
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${LOG_HOME}/01-springboot-demo.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- * 通配符 设置log打印级别 对所有类有效TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF-->
    <!--将上面的appender添加到root-->
    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
    </root>
    <!--<logger name="com.boot" level="INFO"></logger>-->
</configuration>

启动程序,用Postman调用接口看下:





再看另一种读取配置文件的方式:

package com.server.vo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @author CYX
 * @create 2018-07-02-20:20
 */
@Component
public class CardVO {

    @Value("${cardID}")
    private String cardID;

    @Value("${cardName}")
    private String cardName;

    @Override
    public String toString() {
        return "CardVO{" +
                "cardID='" + cardID + '\'' +
                ", cardName='" + cardName + '\'' +
                '}';
    }

    public String getCardID() {
        return cardID;
    }

    public void setCardID(String cardID) {
        this.cardID = cardID;
    }

    public String getCardName() {
        return cardName;
    }

    public void setCardName(String cardName) {
        this.cardName = cardName;
    }
}

再看下properties配置文件:

#修改端口号
server.port=9000

#项目发布根路径(上下文路径)
server.servlet.context-path=/sp-demo

#自定义logback配置文件
logging.config=classpath:conf/logback-config.xml
#SpringBoot日志设置
#logging.file=./log/01-springboot-demo.log
#logging.level.root=info

person.name=CYX
person.age=2000

cardID=001
cardName=银行卡

看下修改后的controller文件:

package com.server.controller;

import com.server.vo.CardVO;
import com.server.vo.PersonVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

/**
 * HelloWorld-Controller-测试
 *
 * @author CYX
 * @create 2018-07-01-20:09
 */
@RestController
public class HelloWorldController {

    public static final Logger LOGGER = LoggerFactory.getLogger(HelloWorldController.class);

    @Autowired
    private PersonVO personVO;

    @Autowired
    private CardVO cardVO;

    @RequestMapping(value = "/sayHello", method = RequestMethod.GET)
    public String sayHello() {

        LOGGER.info("-----");
        LOGGER.info("personVO : " + personVO.toString());
        LOGGER.info("cardVO : " + cardVO.toString());

        return "Hello Spring Boot , personVO : " + personVO.toString();
    }

}

运行程序,通过Postman调用接口:



Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐