ssr66994053 / global-boot

test

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

yiji-boot项目是基于spring-boot定制、优化后的版本。

新人入门基础文档

  • [必看] 配置管理系统 link
  • [必看] Spring Java-based容器配置 link
  • [必看] Spring Boot Reference Guide中文翻译 online local
  • [必看] yiji-boot 新手笔记 link
  • [选看] spring-boot example link
  • [选看] 组件开发指南 link

目前提供的组件

注意:

  • 除JDBC外需要加入数据库相关的驱动包之外,其余组件均可以单独使用,不需要添加额外的依赖。
  • yiji-boot和spring-boot是兼容的,可以直接使用spring-boot的组件
  • 如果提供的组件不能满足你的需求,请联系基础技术部。

目录介绍

  • script: 脚本目录
  • doc: 相关文档
  • yiji-boot-archtype: yiji-boot应用archtype
  • yiji-boot-core: 核心代码模块
  • yiji-boot-starters: 组件代码模块
  • yiji-boot-test: 测试代码模块

FAQ

1. 如何修改日志配置

yiji-boot已经定义了基础日志,您可以自定义日志。

1.1 自定义日志文件

请在classpath下添加logback-spring.xml文件,在文件中加入logback日志配置。比如增加日志输出文件

 <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="xxx">
    <file>${yiji.log.path}/xxx.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${yiji.log.path}/xxx.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>1024MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder>
        <pattern>${yiji.log.pattern.str}</pattern>
    </encoder>
</appender>
<appender class="com.yjf.common.log.LogbackAsyncAppender" name="async-xxx">
    <appender-ref ref="xxx"/>
</appender>
<logger name="com.yiji">
    <appender-ref ref="async-xxx"/>
</logger>

yiji.log.path为日志输出路径,yiji.log.pattern.str日志输出pattern,这个变量由yiji-boot设置

1.2 自定义日志级别

#设置ROOT日志级别为debug
yiji.log.level.root=debug
#设置com.yiji日志级别为warn
yiji.log.level.com.yiji=warn

1.3 修改日志pattern

yiji-boot定义了三种日志pattern,com.yiji.boot.core.configuration.LogAutoConfiguration.LogProperties.Pattern,如下的配置使用MDC中有gid参数的pattern。

yiji.log.pattern=MDC_WITH_GID

默认的日志pattern为com.yiji.boot.core.configuration.LogAutoConfiguration.LogProperties.Pattern#COMMON

注意:

日志pattern修改必须在配置文件中.因为日志是系统启动第一步做的事情,包括hera启动也会依赖日志.如要要让日志配置可以在hera中使用,那么需要在hera启动时把hera自己启动中的日志缓存住,等hera启动完后,再初始化日志系统,把缓存的日志打印出来.这样做必要性不是很大.

1.4 如何通过编程的方式增加日志配置

参考META-INF/spring.factories配置的LogInitializer

1.5 如何增加业务监控

您需要使用com.yjf.common.log.BusinessLogger记录下业务日志就ok了。我们会提供自助式报表展示平台。

使用:

BusinessLogger.BusinessDO bo = new BusinessLogger.BusinessDO();
bo.setLogType("xxxx");
bo.addContent("xx", 2).addContent("key", "value");
BusinessLogger.log(bo);

或者:

BusinessLogger.log("xx", "key", "value", "k", "v");

2. 如何获取配置

@Autowired
private Environment env;

String value= env.getProperty("key");

3. 配置读取顺序(PropertySource order)

配置读取顺序如下,从一个PropertySource读到后不会继续往下读:

Command line arguments
JNDI attributes from java:comp/env
Java System properties (System.getProperties())
OS environment variables
RandomValuePropertySource that only has properties in random.*.
HeraPropertySource [name='hera']
application-{profile}.properties(yml) – outside jar
    - inside jar application.properties(yml) - outside jar
    - inside jar
@PropertySource annotations on your @Configuration classes
Default properties (specified using SpringApplication.setDefaultProperties)

4. 如何自定义hera地址

默认yiji-boot会根据大家使用的环境来设置hera地址.

  • profile=online时,使用zookeeper.yiji.me:2181.
  • profile!=online时,使用snet.yiji:2181.

可以通过下面的方式来配置hera地址:

  • 在java启动参数中通过-Dyiji.hera.zk.url设置
  • 在操作系统中添加环境变量YIJI_HERA_ZK_URL设置

5. 如何开启开发者模式

开发者模式主要提供的能力如下:

  1. 设置默认配置(关闭模板引擎缓存)
  2. 自动重启(建议还是使用spring-loaded)

更多参考DevTools in Spring Boot

5.1 关闭模板引擎缓存(修改模板文件后不用重启)

在主类所在的module加入如下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

使用archtype生成的项目已配置.在项目打包时,此依赖会被排除掉,不会影响线上.

5.2 启用spring-loaded(修改类后不用重启)

run configration里启用spring-loaded,在VM options中加入

-noverify  -javaagent:/Users/bohr/.m2/repository/org/springframework/springloaded/1.2.4.RELEASE/springloaded-1.2.4.RELEASE.jar

上面的jar包路径根据您的情况修改

5.3 如何在编译打包阶段过滤某些资源

以收银台为例,收银台需要在编译打包时,按照当前时间生成版本号.

cashier-assemble/src/main/resources/templates/layout/version.vm中配置如下:

<span id="code_version" style="display:none;">v@webapp.build.version@</span>

cashier-assemble/pom.xml中启用资源过滤version.vm

 <resources>
             <resource>
                 <directory>${basedir}/src/main/resources/</directory>
                 <filtering>true</filtering>
                 <includes>
                     <include>templates/layout/version.vm</include>
                     <include>**/application.properties</include>
                 </includes>
             </resource>
             <resource>
                 <directory>${basedir}/src/main/resources/</directory>
             </resource>
 </resources>

定义参数:

<properties>
        <webapp.build.version>${maven.build.timestamp}</webapp.build.version>
        <maven.build.timestamp.format>yyyyMMddHHmm</maven.build.timestamp.format>
</properties>

在编译打包阶段,vm中的@webapp.build.version@被替换为201602040617

About

test


Languages

Language:Java 95.5%Language:HTML 2.6%Language:Shell 1.1%Language:JavaScript 0.6%Language:Python 0.1%