spring配置
<!-- ##########################aop start########################## -->
<!-- 啟用AOP -->
<aop:aspectj-autoproxy />
<!-- aop日志記錄方法 -->
<bean id="sysLogAspect" class="com.otw.common.aspect.SysLogAspect"/>
<!-- 配置AOP -->
<aop:config>
<!-- 配置切點表達式 -->
<aop:pointcut id="sysLogPointcut" expression="execution(* com.otw.web.action.*.*(..))" />
<!-- 配置切面及配置 -->
<aop:aspect ref="sysLogAspect">
<!-- 環(huán)繞增強 -->
<aop:around method="around" pointcut-ref="sysLogPointcut" />
</aop:aspect>
</aop:config>
<!-- ##########################aop end########################## -->
/*
* 描述:
* 修改人:17109
* 修改時間:2018年3月13日
*/
package com.otw.common.aspect;
import java.lang.reflect.Method;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import org.apache.shiro.SecurityUtils;
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.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import com.google.gson.Gson;
import com.otw.common.annotation.SysLogAnnotation;
import com.otw.utils.HttpContextUtils;
import com.otw.utils.IPUtils;
import com.otw.web.pojo.SysLog;
import com.otw.web.pojo.SysLogin;
import com.otw.web.service.SysLogService;
@Aspect
public class SysLogAspect
{
@Autowired
private SysLogService sysLogService;
@Pointcut("@annotation(com.otw.common.annotation.SysLogAnnotation)")
public void logPointCut()
{
}
@Around("logPointCut()")
public Object around(ProceedingJoinPoint point)
throws Throwable
{
long beginTime = System.currentTimeMillis();
// 執(zhí)行方法
Object result = point.proceed();
// 執(zhí)行時長(毫秒)
long time = System.currentTimeMillis() - beginTime;
// 保存日志
saveSysLog(point, time);
return result;
}
private void saveSysLog(ProceedingJoinPoint joinPoint, long time)
{
MethodSignature signature = (MethodSignature)joinPoint.getSignature();
Method method = signature.getMethod();
SysLog sysLog = new SysLog();
SysLogAnnotation sysLogAnnotation = method.getAnnotation(SysLogAnnotation.class);
if (sysLogAnnotation != null)
{
// 注解上的描述
sysLog.setOperation(sysLogAnnotation.value());
}
// 請求的方法名
String className = joinPoint.getTarget().getClass().getName();
String methodName = signature.getName();
sysLog.setMethod(className + "." + methodName + "()");
// 請求的參數(shù)
Object[] args = joinPoint.getArgs();
try
{
String params = new Gson().toJson(args[0]);
sysLog.setParams(params);
}
catch (Exception e)
{
}
// 獲取request
HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
// 設置IP地址
sysLog.setIp(IPUtils.getIpAddr(request));
// 用戶名
String username = ((SysLogin)SecurityUtils.getSubject().getPrincipal()).getName();
sysLog.setUsername(username);
sysLog.setTime(time);
sysLog.setCreateDate(new Date());
// 保存系統(tǒng)日志
sysLogService.insert(sysLog);
}
}
/**
* 系統(tǒng)日志注解
*
* @author linyuting
* @since 2018-3-13
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SysLogAnnotation {
String value() default "";
}北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產(chǎn)業(yè)為響應國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產(chǎn)業(yè)鏈。利用北京大學優(yōu)質教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經(jīng)驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。