目录
renren-fast开源项目解剖(一)
目前仅分析后台JAVA源码,前端vue后面会有专门针对vue学习后得理解分析。
根据renren-fast基础文档启动项目,根据代码一步步跟踪。以下都是个人对程序得理解,有不对的地方留言讨论。
1.application.yml配置文件中得参数意义,可以去学习springboot了解。
2.其中里面的配置要同步到renren-fast-vue的/static/config/index.js中,修改:
// api接口请求地址 端口和url对应的后端yml文件中配置的server port和context-path
window.SITE_CONFIG['baseUrl'] = 'http://localhost:8880/url';
3.数据源的使用及mybatis框架集成(baomidou--mybatis-plus: mybatis 增强工具包,简化 CRUD 操作。 文档 http://baomidou.com低代码组件库 http://aizuda.com)
数据源使用的com.alibaba.druid.pool.DruidDataSource;
mybatis框架使用的苞米豆开源框架,减少了很多基础的DML操作。
4.登录机制使用的是shiro框架,简便,上手快。
公共工具类解析:
类:io.renren.common.aspect.SysLogAspect
@Pointcut("@annotation(io.renren.common.annotation.SysLog)")
public void logPointCut() {
}
@Around("logPointCut()")
public Object around(ProceedingJoinPoint point) throws Throwable {
long beginTime = System.currentTimeMillis();
//执行方法
Object result = point.proceed();
//执行时长(毫秒)
long time = System.currentTimeMillis() - beginTime;
//保存日志
saveSysLog(point, time);
return result;
}
1.切点的触发条件是有自定义注解io.renren.common.annotation.SysLog时,进行切面操作。
2.在around方法里面记录开始时间,然后执行拦截方法,最后记录完成时间,保存日志。
此处是使用aop编程,方便快捷的为操作添加日志记录。
具体用到的地方可以参考Controller--io.renren.modules.sys.controller.SysMenuController里面有使用到@SysLog()。
类:io.renren.common.aspect.RedisAspect
//是否开启redis缓存 true开启 false关闭
@Value("${spring.redis.open: false}")
private boolean open;
@Around("execution(* io.renren.common.utils.RedisUtils.*(..))")
public Object around(ProceedingJoinPoint point) throws Throwable {
Object result = null;
if(open){
try{
result = point.proceed();
}catch (Exception e){
logger.error("redis error", e);
throw new RRException("Redis服务异常");
}
}
return result;
}
1.@Value中的open标志,获取的配置文件的值,就上面代码看,是默认的给的false,不开启redis。我们在配置文件yml里面也看得到写的是false,若开启,则会在启动项目的时候连接redis服务器。
2.这里也是用的aop进行的全局控制,使用到RedisUtils里的任意方法都会执行切面。
类:io.renren.common.utils.RedisUtils是针对redis操作的工具类。
类:io.renren.common.exception.RRException、io.renren.common.exception.RRExceptionHandler
异常类定义及Controller出现异常的处理。
类:io.renren.common.utils.Constant
常量定义,里面基本使用的枚举方式。
其他的公共类用法一目了然,大家可以简单的去看看,我就不一一介绍了。