SpringAop_2通知(新手)和无法找到元素 'aop:aspectj-autoproxy' 的声明
AspectJ:java社区里最完善最流行的AOP框架
- 在spring2.0以上的版本中,可以使用基于AspectJ注解或基于XML配置的AOP,其实Spring本身提供了aop框架,但是AspectJ更方便.
在Spring中启用AspectJ注解支持
使用条件:
1.要在Spring中使用AspectJ注解,必须在classapth下包含AspectJ类库(aopalliance.jar,aspectj.weaver.jar,spring-aspects.jar)
2.将aopSchema添加上到根元素中。
3.要在SpringIOC容器中启用AspectJ注解支持,只要在Bean配置文件定义一个空的xmL元素aop:aspectjautoproxy
4.当SpringIOC容器侦测到Bean配置文件中的aop:aspectjautoproxy元素时,会自动为与AspectJ切面匹配的Bean创建处理步骤:
1.添加@Component(只要是可以被context:component-scan扫描到的组件注释即可),因为切面(上一篇笔记记载过)说白了也是需要被加入到IOC容器的类,所以要加入进去,再添加@aspect这个注释加上表示这个类是一个切面.2.然后在需要的方法上添加注释@before或@after(后置通知即使是方法异常也会继续执行,但不能访问目标方法执行的结果)
例图如下:
如果你想要的访问被代理方法的参数或者参数值等:可以用JoinPoint类这个类提供可以访问的方法
稍微讲一下原理(视频里的搬运):当指定方法beforeMethod()执行的时候,他会检测before注解里的内容标记的方法,会自动为这个方法的类生成代理对象,在调用这个方法执行之前,将beforeMethod()这个方法加入到在代理对象之前.
注意:before的参数可以是:
*
3.然后在bean添加(这里我遇到了一个问题,就是无法找到元素 ‘aop:aspectj-autoproxy’ 的声明):
解决问题的方法就是:我的xml文件中配置错误,他是自己注入的aop的命名空间,但是问题出在哪里我也不知道,然后百度呗,这样就好了
<?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:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
解决的问题的出处在这里:https://blog.csdn.net/u010004317/article/details/47700447?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
其他通知:
- 返回通知:
result可以返回方法的返回值
- 异常通知
ex可以指定特定的异常
3.环绕通知 :通知的执行顺序:
Spring基于xml方式配置AOP
SpringAop_2通知(新手)和无法找到元素 'aop:aspectj-autoproxy' 的声明相关推荐
- Selenium Web 自动化 - 如何找到元素
Selenium Web 自动化 - 如何找到元素 2016-07-29 1. 什么是元素? 元素:http://www.w3school.com.cn/html/html_elements.asp ...
- Spring通知类型及使用ProxyFactoryBean创建AOP代理
Spring 通知类型 通知(Advice)其实就是对目标切入点进行增强的内容,Spring AOP 为通知(Advice)提供了 org.aopalliance.aop.Advice 接口. Spr ...
- “通配符的匹配很全面, 但无法找到元素 ‘utillist‘ 的声明”的问题
"通配符的匹配很全面, 但无法找到元素 'util:list' 的声明"的问题 报错: Exception in thread "main" org.sprin ...
- 通配符的匹配很全面, 但无法找到元素 'tx:annotation-driven' 的声明
启动Tomcat时报错,通配符的匹配很全面, 但无法找到元素 'tx:annotation-driven' 的声明,报错如下 1.从报错可以看到找不到元素 tx:annotation-driven ...
- 匹配的通配符很全面,但无法找到元素mvc:annotation-driven的声明
目录 前言 1. 错误重现 2. 解决问题 3. 一些思考 前言 本篇文章的来源是遇到的一个奇葩的问题,springmvc 部署之后,出现"匹配的通配符很全面,但无法找到元素 mvc:a ...
- Spring配置文件报错 :通配符的匹配很全面, 但无法找到元素 ‘context:property-placeholder‘ 的声明
在Spring导入连接数据库的配置文件的时候,使用idea创建配置文件有时候会报XmlBeanDefinitionStoreException异常. <?xml version="1. ...
- vc-complex-type.2.4.c: 通配符的匹配很全面, 但无法找到元素 ‘context:property-placeholder‘ 的声明。
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 6 in XML document from c ...
- SpringMVC:通配符的匹配很全面, 但无法找到元素 ‘context:component-scan‘ 的声明
问题描述 配置servlet.xml配置文件时,出现通配符的匹配很全面, 但无法找到元素 'context:component-scan' 的声明报错. <?xml version=" ...
- Spring AOP AspectJ 代码实例
本文参考来源 http://examples.javacodegeeks.com/enterprise-java/spring/aop/spring-aop-aspectj-example/ http ...
- Spring3系列12-Spring AOP AspectJ
本文讲述使用AspectJ框架实现Spring AOP. 再重复一下Spring AOP中的三个概念, Advice:向程序内部注入的代码. Pointcut:注入Advice的位置,切入点,一般为某 ...
最新文章
- 参观 Google 总部是一种什么体验?
- java switch 应用
- poj1330|bzoj3732|noip2013 货车运输 kruskal+倍增lca
- CentOS6 kvm添加网卡桥接口脚本
- Java学习day2
- install python-pip_yum install python-pip:没有包python-pip可用
- php7协程通信使用,PHP7下的协程实现
- python异步IO
- mac 终端登陆linux,Mac终端自动登录服务器
- OpenCV 4.0 rc版本发布,扩展计算图Graph API
- Angular6入门
- 谁说漂亮女程序猿就不能拿大厂Offer了?
- 如何快速定位 Redis 热 key
- Excel从数据中挑出几个数值使其和为某一固定值
- 《悲伤逆流成河》影评
- 总结27 -- E45: ‘readonly‘ option is set (add ! to override)
- 批量添加AD账号(一)
- 一个黑科技,Python竟然可以伪造很多'假'的数据!
- 3D游戏建模需要学会哪些软件?想入行游戏建模的你都学习了吗?
- ztree插件树状图