yiji-boot项目是基于spring-boot定制、优化后的版本。
- [必看] 配置管理系统 link
- [必看] Spring Java-based容器配置 link
- [必看] Spring Boot Reference Guide中文翻译 online local
- [必看] yiji-boot 新手笔记 link
- [选看] spring-boot example link
- [选看] 组件开发指南 link
- rabbitmq 异步消息
- cs 邮件,外部通知
- dubbo Java RPC
- fastdfs 分布式存储
- jdbc druid数据源
- mybatis 数据库持久化层
- jpa 数据库持久化层
- mongodb mongo持久化层
- postman 发送短信
- security 加密解密相关
- session 分布式session
- velocity java模板引擎
- yedis redis缓存
- web webMVC组件
- boss boss系统接入
- metrics app度量统计
- xss xss过滤
- csrf csrf攻击防范
- filterchain 通用过滤器
- offlinelocks 离线锁
- rocketmq rocketmq
- appservice appservice(提供服务通用相关处理能力)
- cas cas
注意:
- 除JDBC外需要加入数据库相关的驱动包之外,其余组件均可以单独使用,不需要添加额外的依赖。
- yiji-boot和spring-boot是兼容的,可以直接使用spring-boot的组件
- 如果提供的组件不能满足你的需求,请联系基础技术部。
- script: 脚本目录
- doc: 相关文档
- yiji-boot-archtype: yiji-boot应用archtype
- yiji-boot-core: 核心代码模块
- yiji-boot-starters: 组件代码模块
- yiji-boot-test: 测试代码模块
yiji-boot
已经定义了基础日志,您可以自定义日志。
请在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
设置
#设置ROOT日志级别为debug
yiji.log.level.root=debug
#设置com.yiji日志级别为warn
yiji.log.level.com.yiji=warn
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启动完后,再初始化日志系统,把缓存的日志打印出来.这样做必要性不是很大.
参考META-INF/spring.factories
配置的LogInitializer
您需要使用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");
@Autowired
private Environment env;
String value= env.getProperty("key");
配置读取顺序如下,从一个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)
默认yiji-boot会根据大家使用的环境来设置hera地址.
- profile=online时,使用zookeeper.yiji.me:2181.
- profile!=online时,使用snet.yiji:2181.
可以通过下面的方式来配置hera地址:
- 在java启动参数中通过
-Dyiji.hera.zk.url
设置 - 在操作系统中添加环境变量
YIJI_HERA_ZK_URL
设置
开发者模式主要提供的能力如下:
- 设置默认配置(关闭模板引擎缓存)
- 自动重启(建议还是使用
spring-loaded
)
在主类所在的module
加入如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
使用archtype
生成的项目已配置.在项目打包时,此依赖会被排除掉,不会影响线上.
在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包路径根据您的情况修改
以收银台为例,收银台需要在编译打包时,按照当前时间生成版本号.
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