在以前文章中,我们介绍了SpringBoot的使用,详见:
一篇文章全面了解SpringBoot
,通过SpringBoot我们可以很方便的开发后台Restful接口,前端代码可通过调用这些接口调取动态数据,本文主要介绍基于SpringBoot经常面临到的一些其他常见问题做个整理;
在一篇文章全面了解SpringBoot这篇文章中我们解决了:
配置文件怎么管理,不同的环境配置文件怎么区分(如QA,生产和开发环境);
项目怎么做集成测试和单元测试:不光单元测试,还包括模拟用户的真实操作;
修改Java代码的时候帮我自动重启服务器,以便能实时反映修改情况;
修改静态页面代码,网页无需手动刷新,帮我自动LiveReload;
部署打包怎么实现一键部署?
项目如何做到横向扩展,即怎么保持各个Web项目sessionid同步?
发布的项目如何做监控,怎么无缝扩展监控指标?
项目中如何剥离“脚本类”代码,比如公式定义等?
Web安全是否每次需要我自己实现,比如处理登录,登出,URI保护等?
繁杂的数据库操作我是否一定要写一大堆BO,VO,Service,DAO?
JavaBean中一定要写这么多Getter和Setter么?
maven中的依赖引入与排除,版本冲突是否非得我自己整理和排查?
项目进行中的数据库脚本管理怎么管理?防止变更错误,跨数据库的脚本管理呢?
这篇文章我们进一步解决:
SpringBoot启用log4j记录日志,并发日志发往log4j日志中心(集中化日志管理与监控);
SpringBoot调用微服务Dubbo;
SpringBoot中使用切面:接口调用统计,API权限分级等;
日志集中式管理与监控
首先我们需要做一个Socket的服务端,基于Netty自定义包头包体的TCP程序设计我们会在下一篇介绍并给出源码,这里记为logger-server程序,项目中,只需要引入client的maven jar即可,自定义的Log4j的Appender的实现较为简单,本文不做介绍,这一切都就绪后,在项目只需要引入maven和配置即可实现将log发往日志中心:
添加maven依赖
在资源目录下新建:
在代码任意处利用log4j写入日志,如:
至此,通过nettyIOAppender ref的Logger都会将日志发往日志中心,在那里你可以得到哪个类,哪个方法,来自哪个用户做了什么处理,可以收集到用户使用的浏览器信息,来源IP,访问来源等有效信息,可用于接口统计,用户行为收集,排错跟踪等,下图是Netty服务端收到的消息:
Dubbo微服务的使用
在我们设计和实现后台架构时,我们会把公共的服务做成微服务以便所有系统可以共享,比如在一个电商系统中,我们会把商品分类,商品详情信息,用户等信息封装成微服务,这样网站,客服系统,统计统计,CRM系统等会可以调用这些微服务,减少重复开发,而且微服务框架一般还提供负载均衡,版本控制,限流等诸多功能;
Alibaba的团队针对Dubbo的使用专门提供了SpringBoot的maven依赖工程:
在我们编写后台服务时,如需调用微服务(消费方),我们只需要在Controller里将微服务的Service依赖注入进来即可:
并在中加入配置:
Aspect切面的使用
在我们项目开发中,我们经常会碰到统计接口调用次数以及API分级调用(有些接口需要特定API级别才能调用)的功能,这时我们就可以使用到切面,使用步骤如下:
编写一个类,在SpringBoot启动后,订阅的xxx频道;
编写一个切面类,定义类,拦截所有的前置请求用于统计接口调用,并定义一个环绕通知,控制用户是否有权限调用该类的方法
至此,我们解决SpringBoot中的这三个常见用法,希望对你有帮助;
领取专属 10元无门槛券
私享最新 技术干货