一款企业信息化开发基础平台,可以用于快速构建企业后台管理系统,集成了 OA(办公自动化)、SCM(供应链系统)、ERP(企业资源管理系统)、CMS(内容管理系统)、CRM(客户关系管理系统)等企业系统的通用业务功能。Github 链接: https://github.com/u014427391/jeeplatform 欢迎下载或者 star(收藏)
JeePlatform 项目是一款以 Activiti 为工作流引擎,以 Spring Framework 为核心框架,集 ORM 框架 Mybatis,Web 层框架 SpringMVC 和多种开源组件框架而成的一款通用基础平台,基于本平台可以实现快速开发,实现企业信息管理的高效、高性能开发。系统追求安全、性能方面的有效实现。
管理系统登录页面,采用 Shiro 登录验证
管理系统主页前端,可以适配移动端页面
管理系统主页采用开源前端模板,具有换肤功能
管理系统主页,获取用户具有的权限,显示菜单
角色进行授权,只有超级管理员才具有权限
角色进行配置,可以学习一下 RBAC(基于角色的权限控制)
使用 JavaEmail 插件实现邮件发送,记得需要开启 SSl 验证
项目采用 CAS 登录登录实现,单点登录集群搭建可以参考博客: http://blog.csdn.net/u014427391/article/details/78653482 项目单点登录:使用 nginx 作为负载均衡,使用 redis 存储 tomcat session,来实现集群中 tomcat session 的共享,使用 redis 作为 cas ticket 的仓库,来实现集群中 cas ticket 的一致性。
单点登录集群如图
先从 Redis 里获取缓存,查询不到,就查询 MySQL 数据库,然后再保存到 Redis 缓存里,下次查询时直接调用 Redis 缓存
package org.muses.jeeplatform.cache;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
/**
* AOP 实现 Redis 缓存处理
*/
@Component
@Aspect
public class RedisAspect {
private static final Logger LOGGER = LoggerFactory.getLogger(RedisAspect.class);
@Autowired
@Qualifier("redisCache")
private RedisCache redisCache;
/**
* 拦截所有元注解 RedisCache 注解的方法
*/
@Pointcut("@annotation(org.muses.jeeplatform.annotation.RedisCache)")
public void pointcutMethod(){
}
/**
* 环绕处理,先从 Redis 里获取缓存,查询不到,就查询 MySQL 数据库,
* 然后再保存到 Redis 缓存里
* @param joinPoint
* @return
*/
@Around("pointcutMethod()")
public Object around(ProceedingJoinPoint joinPoint){
//前置:从 Redis 里获取缓存
//先获取目标方法参数
long startTime = System.currentTimeMillis();
String applId = null;
Object[] args = joinPoint.getArgs();
if (args != null && args.length > 0) {
applId = String.valueOf(args[0]);
}
//获取目标方法所在类
String target = joinPoint.getTarget().toString();
String className = target.split("@")[0];
//获取目标方法的方法名称
String methodName = joinPoint.getSignature().getName();
//redis 中 key 格式: applId:方法名称
String redisKey = applId + ":" + className + "." + methodName;
Object obj = redisCache.getDataFromRedis(redisKey);
if(obj!=null){
LOGGER.info("**********从 Redis 中查到了数据**********");
LOGGER.info("Redis 的 KEY 值:"+redisKey);
LOGGER.info("REDIS 的 VALUE 值:"+obj.toString());
return obj;
}
long endTime = System.currentTimeMillis();
LOGGER.info("Redis 缓存 AOP 处理所用时间:"+(endTime-startTime));
LOGGER.info("**********没有从 Redis 查到数据**********");
try{
obj = joinPoint.proceed();
}catch(Throwable e){
e.printStackTrace();
}
LOGGER.info("**********开始从 MySQL 查询数据**********");
//后置:将数据库查到的数据保存到 Redis
String code = redisCache.saveDataToRedis(redisKey,obj);
if(code.equals("OK")){
LOGGER.info("**********数据成功保存到 Redis 缓存!!!**********");
LOGGER.info("Redis 的 KEY 值:"+redisKey);
LOGGER.info("REDIS 的 VALUE 值:"+obj.toString());
}
return obj;
}
}
可以看到 Redis 里保存到了缓存
Github 链接: https://github.com/u014427391/jeeplatform 欢迎下载或者 star(收藏)
1
firefox12 2017-12-25 11:11:08 +08:00 via iPhone
说实话 贴代码这种宣传方式真是 low 爆了,最关键的是谁会用,怎么样能用。那些平台可以一键部署 使用,那些平台可以直接使用。现在的人耐心越来越少,只有我还写这些东西,当然我知道你也根本不会看
|
2
sobigfish 2017-12-25 11:14:49 +08:00
开源就开源 和 GitHub 有一毛钱关系么?拿 GitHub 背书(还以为是 GitHub 官方的项目的)
而且没有见到开源协议 Choose a License: Choose an open source license https://choosealicense.com/ |
3
mokeyjay 2017-12-25 11:19:20 +08:00
|