资源简介
本项目是一个demo项目,测试的主要是两个东西:
1、spring mvc 的拦截器;
2、面向切面编程AOP
在实现过程中,我尽量贴近实际开发与场景,麻雀虽小,五脏俱全,个人感觉这个项目是web框架搭建的一个极简之道实践。
项目中可能还存在很多的问题,希望大家不吝赐教,谢谢。
1、spring mvc 的拦截器;
2、面向切面编程AOP
在实现过程中,我尽量贴近实际开发与场景,麻雀虽小,五脏俱全,个人感觉这个项目是web框架搭建的一个极简之道实践。
项目中可能还存在很多的问题,希望大家不吝赐教,谢谢。

代码片段和文件信息
package demo.spring.aspect.myAspect;
import org.apache.log4j.Logger;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
/** 定义切面类 */
@Component
@Aspect
public class MyAopAspect {
private static Logger logger = Logger.getLogger(MyAopAspect.class);
/**
* @Pointcut(value = “execution (* demo.spring.aspect.service.impl.*.*(..))“)
* 定义统一拦截的切入点,其中第一个*表示任意返回类型,第二个*表示任意类名,
* 假如第二个*前面是两个.则表示包括包里面的子包,第三个*表示任意方法名,后面的小括号表示任意参数值
* 同理,可以是:@Pointcut(value = “execution (* demo.spring.aspect.service.impl.AspectServiceImpl.*(..))“)
* */
@Pointcut(“execution (* demo.spring.aspect.service.impl.*.*(..))“)
public void myPointCut() {
}
@Before(“myPointCut()“)
public void myPointCutBefore(JoinPoint point) {
logger.info(“切面Before(下面打印方法及参数)“);
printMethodParams(point null);
}
@After(“myPointCut()“)
public void myPointCutAfter(JoinPoint point) {
logger.info(“切面After“);
}
@AfterReturning(value = “myPointCut()“ returning = “result“)
public void myPointCutAfterReturning(JoinPoint point object result) {
logger.info(“切面AfterReturning(下面打印方法、参数及结果)“);
printMethodParams(point result);
}
@AfterThrowing(pointcut = “myPointCut()“ throwing = “throwable“)
public void afterThrowing(JoinPoint point Throwable throwable) {// 报错切面
// 打印报错
printMethodParams(point “切面-方法异常--“ + throwable.getMessage());
}
@Around(“myPointCut()“)
public object around(ProceedingJoinPoint point) { // 在程序运行前后执行,此处统计程序运行时间
String className = point.getTarget().getClass().getSimpleName();
String methodName = point.getSignature().getName();
object[] methodArgs = point.getArgs(); // 获取方法的参数值数组。
StringBuffer methodArgsStr = new StringBuffer();
for (object obj : methodArgs) {
methodArgsStr.append(obj.toString()).append(““);
}
try {
logger.info(String.format(“切面around - start[className=%s][methodName=%s]“ className methodName));
long startTimeMillis = System.currentTimeMillis();
//调用 proceed() 方法才会真正的执行实际被代理的方法
object result = point.proceed();
long execTimeMillis = System.currentTimeMillis() - startTimeMillis;
logger.info(String.format(“切面around - end[className=%s][methodName=%s][result=%s]-耗时:%sms“ className
methodName result execTimeMillis));
return result;
} catch (Throwable te) {
logger.err
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-01-26 21:53 demo.spring.aspect\
文件 1312 2019-01-26 20:45 demo.spring.aspect\.classpath
文件 1094 2019-01-26 14:52 demo.spring.aspect\.project
目录 0 2019-01-26 21:53 demo.spring.aspect\.settings\
文件 639 2019-01-26 14:52 demo.spring.aspect\.settings\.jsdtscope
文件 430 2019-01-26 17:50 demo.spring.aspect\.settings\org.eclipse.jdt.core.prefs
文件 90 2019-01-26 14:52 demo.spring.aspect\.settings\org.eclipse.m2e.core.prefs
文件 695 2019-01-26 14:52 demo.spring.aspect\.settings\org.eclipse.wst.common.component
文件 252 2019-01-26 20:45 demo.spring.aspect\.settings\org.eclipse.wst.common.project.facet.core.xm
文件 49 2019-01-26 14:52 demo.spring.aspect\.settings\org.eclipse.wst.jsdt.ui.superType.container
文件 6 2019-01-26 14:52 demo.spring.aspect\.settings\org.eclipse.wst.jsdt.ui.superType.name
文件 50 2019-01-26 14:52 demo.spring.aspect\.settings\org.eclipse.wst.validation.prefs
目录 0 2019-01-26 21:53 demo.spring.aspect\log\
文件 16651 2019-01-26 21:27 demo.spring.aspect\log\myLog-20190126.log
文件 2577 2019-01-26 19:41 demo.spring.aspect\pom.xm
文件 1364 2019-01-26 21:40 demo.spring.aspect\readme.txt
目录 0 2019-01-26 21:53 demo.spring.aspect\src\
目录 0 2019-01-26 21:53 demo.spring.aspect\src\main\
目录 0 2019-01-26 21:53 demo.spring.aspect\src\main\java\
目录 0 2019-01-26 21:53 demo.spring.aspect\src\main\java\demo\
目录 0 2019-01-26 21:53 demo.spring.aspect\src\main\java\demo\spring\
目录 0 2019-01-26 21:53 demo.spring.aspect\src\main\java\demo\spring\aspect\
目录 0 2019-01-26 21:53 demo.spring.aspect\src\main\java\demo\spring\aspect\myAspect\
文件 4518 2019-01-26 21:01 demo.spring.aspect\src\main\java\demo\spring\aspect\myAspect\MyAopAspect.java
目录 0 2019-01-26 21:53 demo.spring.aspect\src\main\java\demo\spring\aspect\service\
文件 233 2019-01-26 21:07 demo.spring.aspect\src\main\java\demo\spring\aspect\service\IAspectService.java
目录 0 2019-01-26 21:53 demo.spring.aspect\src\main\java\demo\spring\aspect\service\impl\
文件 520 2019-01-26 21:07 demo.spring.aspect\src\main\java\demo\spring\aspect\service\impl\AspectServiceImpl.java
目录 0 2019-01-26 21:53 demo.spring.aspect\src\main\java\demo\spring\aspect\web\
文件 1771 2019-01-26 21:09 demo.spring.aspect\src\main\java\demo\spring\aspect\web\AspectTestController.java
文件 657 2019-01-26 17:21 demo.spring.aspect\src\main\java\demo\spring\aspect\web\ba
............此处省略46个文件信息
- 上一篇:anigif.ocx含有注册机
- 下一篇:过零触发器MOC4031控制的交流调压电路
相关资源
- SpringMVC文件上传与的实现.rar
- SpringBoot+H2+mybatis-plus59130
- 独立团封包拦截器vip专版
- 基于J2EE物资出入库管理系统
- 基于SSM+CXF构建的RESTFul webservice
- 大数据中的云网络Cloud Networking for B
- Spring+MyBatis企业应用实战第一二版的源
- springboot+rabbitmq项目demo(亲测可正常运
- springboot整合RabbitMQ实现延时队列的两
- 关于Spring MVC项目maven中通过fileupload上
- Spring-Data-Redis2.0+Spring5
- 2017年-传智播客-张志君老师-SpringBoo
- springboot+mybatis整合实现注册登录
-
spring-fr
amework-5.0.2.RELEASE 源码包 - 基于web的图书馆运营系统
- springboot+webflux+mongodb+freemarker
- springboot整合activiti完整demo
- SpringBoot实战(第4版)清晰版.pdf.zip
- SpringBoot 中文文档
- springboot+jpa+thymeleaf实现增删改查分页
- es(elasticsearch)整合SpringCloudSpringBo
- Springboot日志开启SLF4J过程解析
- 原银在线信贷平台概要设计说明书v
- springcloud 微服务(全套视频)
- springCloud教学视频
- springboot全套教程2018年2.0版本
- 官网springboot项目
- Spring Boot中自定义注解结合AOP实现主备
- flowable整合Spring
- Spring Security架构以及源码详析
评论
共有 条评论