spring默认使用jdk的代理方式,使用jdk的代理方式我们知道,代理的类需要实现一个接口,若果没有就会报,java.lang.NoSuchMethodException: com.sun.proxy.$Proxy83.loginPage()异常, 这时候我们可以使用<aop:aspectj-autoproxy proxy-target-class="true"/>让spring使用cglib的代理方式,cglib的时候需要有默认的构造方法,class不能为final的,…
package com.hope.service.impl;import com.hope.service.IAccountService;import org.aspectj.lang.annotation.Pointcut;import org.springframework.stereotype.Service;/** * @author newcityman * @date 2019/11/22 - 23:27 */@Service("accountService")publi…
一.静态代理实现 1.接口(抽象主题) 2.接口的实现类(真实主题) 3.代理类(代理主题) 4.测试类: ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); ProxySubject proxySubject =(ProxySubject) context.getBean("proxySubject"); proxySubject.doSo…
说明: SSM项目中的每一个请求都需要进行日志记录操作.一般操作做的思路是:使用springAOP思想,对指定的方法进行拦截.拼装日志信息实体,然后持久化到数据库中.可是仔细想一下会发现:每次的客户端的每一次请求,服务器都会处理两件事情.一个是正常的业务操作:另一个就是我们额外要做的日志数据记录.这样的话,每次请求的"效率"就变得收到影响了,换句话说就是"耦合"了.明明一个请求是干一件特定的事情,你却又给我加上一部分东西.而且这一次请求是必须在额外做的事情做完才能返…
复制依赖和改jar包方式 src下的都复制过来. 复制到新项目里了 bean.xml里面复制上面一行代码到下面.把aop改成context. 配置spring容器创建时要扫描的包 Service的配置这里就可以删除了 配置注解 使用@Service注解 开始AOP配置 把通知类交给Spring来管理 在Logger上加注解.之类注意,@Service和@Repository都不合适.因为logger属于三层 所以这里用@Component这个注解来配置 写完上面的@Component的注解后.b…
Caused by: java.lang.IllegalArgumentException: ProceedingJoinPoint is only supported for around advice at org.springframework.aop.aspectj.AbstractAspectJAdvice.maybeBindProceedingJoinPoint(AbstractAspectJAdvice.java:405) at org.springframework.aop.as…
Spring框架之AOP源码完全解析 Spring可以说是Java企业开发里最重要的技术.Spring两大核心IOC(Inversion of Control控制反转)和AOP(Aspect Oriented Programming面向切面编程).IOC技术我们在上一篇文章"Spring框架之beans源码完全解析"中进行了分析,本文对Spring框架的AOP源码进行分析. AOP面向切面编程是通过预编译方式和运行其动态代理,实现在不修改源代码的情况下给程序动态统一添加功能的一种技术,…
贴出applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://ww…
8.4.6 基于XML配置文件的管理方式 Spring 2.x 提供一个新的aop:命名空间来定义切面.切入点和增强处理. XML配置方式优点: ⊙ 如果应用没有使用JDK 1.5 以上版本,那么应用只能使用XML配置方式来管理切面.切入点和增强处理等. ⊙ 采用XML配置方式时对早期的Spring用户来说更加习惯,而且这种方式允许使用纯粹的POJO来支持AOP.当使用AOP作为工具来配置企业服务时,XML会是一个很好的选择. 当使用XML风格时,可以在配置文件中清晰地看出系统中存在那些切面.…
8.4.5 基于注解的“零配置”方式 AspectJ允许使用注解定义切面.切入点和增强处理,而Spring框架则可识别并根据这些注解来生成AOP代理.Spring只是使用了和AspectJ 5 一样的注解,但并没有使用AspectJ的编译器或至如期,底层依赖使用的是Spring AOP,依然是在运行时动态生成AOP代理,并不依赖于AspectJ 的编译器或者织入器. 为了启用Spring 对@AspectJ切面配置的支持,并保证Spring容器中的目标Bean被一个或多个切面自动增强,必须在Sp…