最近客户现在提出系统访问非常慢,需要优化提升访问速度,在排查了nginx.tomcat内存和服务器负载之后,判断是数据库查询速度慢,进一步排查发现是因为部分视图和表查询特别慢导致了整个系统的响应时间特别长.知道了问题之后,就需要对查询比较慢的接口进行优化,但哪些接口需要优化.哪些不需要呢?只能通过日志里的执行时间来判断,那么如何才能知道每一个接口的执行时间呢? 对于这个问题,想到了使用动态代理的方式统一记录方法的执行时间并打印日志,这样就能很直观.方便的看到每个接口的执行时间了. 由于使用的是s…
spring aop的使用分为两种,一种是使用注解来实现,一种是使用配置文件来实现. 先来简单的介绍一下这两种方法的实现,接下来详细的介绍各处的知识点便于查阅.目录如下: 1.基于注解实现spring aop 2.基于配置文件实现spring aop 3.增强的分类 4.切点表达式的构成 1.基于注解来实现的方法 基于注解并不意味着不需要配置文件,只不过是在配置文件中所需要的配置很少.切面编程,显然我们需要一个增强类,一个被增强的普通类. 配置文件中需要添加以下的内容 xmlns:aop="ht…
为什么会有此项目?在某日,我看博客时,看到了讲面向切面编程的内容,之前也知道spring是面向切面编程的,只是自己没有写过相关的代码,于是决定自己写一个test.但是url拦截器从外部看,和AOP有相似的地方,所以顺便把拦截器也实现一下.项目日志使用的是log4j,这个有点粗糙,因为时间有限.在实现过程中,我尽量贴近实际开发与场景,麻雀虽小,五脏俱全,个人感觉这个项目是web框架搭建的一个极简之道实践. 本项目是一个demo项目,测试的主要是两个东西:1.spring mvc 的拦截器:2.面向…
spring 切面编程中获取具体方法的方法 工作中,使用环绕通知,用来捕获异常,然后通过获取方法的返回值,返回不同的数据给到调用方. 由于方法的返回值不同,我们处理异常时,也需要返回不同的格式. 这时,就需要获取具体方法了的返回值了. 我的环绕通知方法如下: @Around(value = "GlobalControllerAspect.controllerPointcut()") public Object around(ProceedingJoinPoint proceedingJ…
1.在spring-mvc.xml配置文件中打开切面开关: <aop:aspectj-autoproxy proxy-target-class="true"/> 注意:proxy-target-class属性值决定是基于接口的还是基于类的代理被创建.如果proxy-target-class 属性值被设置为true,那么基于类的代理将起作用(这时需要cglib库).如果proxy-target-class属值被设置为false或者这个属性被省略,那么标准的JDK 基于接口的代…
import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.commons.lang.SerializationException; import org.apach…
首选需要参考的是:[参考]http://www.cnblogs.com/guokai870510826/p/5977948.html    http://www.cnblogs.com/guokai870510826/p/5981015.html 1:首先定义maven <!--配置aop切面编程需要引入的包--> <dependency> <groupId>org.springframework</groupId> <artifactId>sp…
Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of Control – IOC) 理解依赖注入(DI – Dependency Injection) Bean XML 配置(1)- 通过XML配置加载Bean Bean XML 配置(2)- Bean作用域与生命周期回调方法配置 Bean XML 配置(3)- 依赖注入配置 Bean XML 配置(…
Spring面向切面编程(AOP)是企业级应用的基石,可以这样说,如果大家要升级到高级程序员,这部分的知识必不可少. 这里我们将结合一些具体的案例来讲述这部分的知识,并且还将给出AOP部分的一些常见面试题.本文的文字和案例根据java web轻量级开发面试教程改编. 1 面向切面编程的使用场景  现在有如下需求,在调用项目里的很多方法之后,需要调用内存回收的方法,用如下方式可以来实现这个需求. 1 void f1(){ 2 f1的正常业务 3 //回收内存 4 clearMem(); 5 } 6…
本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一.AOP切面编程 1.什么是AOP编程 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP(面向对象编程)的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型.利用AOP可以对业务逻辑的各个部…