Spring(十)--Advisor顾问
2018-09-18 06:37:30来源:博客园 阅读 ()
Spring之Advisor顾问
1. 创建新的xml文件 advisor.xml
<!--01. 配置目标对象 实际肯定是配置UserServiceImpl--> <bean id="userDaoImpl" class="com.xdf.dao.UserDaoImpl"/> <!--02.配置前置通知--> <bean id="beforeAdvice" class="com.xdf.advice.BeforeAdvice"/> <!--03.配置工厂--> <bean id="userProxy" class="org.springframework.aop.framework.ProxyFactoryBean"> <!--配置目标对象--> <property name="targetName" value="userDaoImpl"/> <!--配置顾问--> <property name="interceptorNames" value="myAdvisor"/> </bean> <!--04.配置顾问myAdvisor--> <bean id="myAdvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor"> <!--配置通知 通知只是顾问的一个属性 --> <property name="advice" ref="beforeAdvice"/> <!--配置切入点--> <!-- <property name="mappedName" value="eat"/>--> <property name="mappedNames" value="eat,sleep"/> </bean>
2. 创建测试类
** * 使用顾问 advisor.xml */ @Test //前置通知 public void testAdvisor(){ ApplicationContext context=new ClassPathXmlApplicationContext("advisor.xml"); UserDao userDao= context.getBean("userProxy",UserDao.class); userDao.eat(); userDao.sleep(); }
·可以解决 给指定的主业务方法 增强的问题!
3. 使用正则匹配,创建新的xml文件
在Dao层增加 ea()和e()!便于我们测试
<!--01. 配置目标对象 实际肯定是配置UserServiceImpl--> <bean id="userDaoImpl" class="com.xdf.dao.UserDaoImpl"/> <!--02.配置前置通知--> <bean id="beforeAdvice" class="com.xdf.advice.BeforeAdvice"/> <!--03.配置工厂--> <bean id="userProxy" class="org.springframework.aop.framework.ProxyFactoryBean"> <!--配置目标对象--> <property name="targetName" value="userDaoImpl"/> <!--配置顾问--> <property name="interceptorNames" value="myAdvisor"/> </bean> <!--04.配置顾问myAdvisor RegexpMethodPointcutAdvisor --> <bean id="myAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor"> <!--配置通知 通知只是顾问的一个属性 --> <property name="advice" ref="beforeAdvice"/> <!--配置切入点 使用正则表达式 com.xdf.dao.UserDaoImpl.eat 务必使用类名+方法名 . 代表任意单个字符 * 代表.字符出现的次数是0-N ?:0 -1 +: 1-N --> <property name="patterns"> <array> <!-- <value>.*e.*</value> 匹配 eat 和sleep--> <!-- <value>com.xdf.dao.UserDaoImpl.ea.?</value>匹配 eat 和ea--> <value>com.xdf.dao.UserDaoImpl.*e.*</value> <!--匹配 eat 和ea e--> </array> </property>
</bean>
<!--还是一个问题没解决 一个工厂只能操作一个对象-->
4. 创建测试类
/** * 使用顾问 regex.xml */ @Test //前置通知 public void testRegex(){ ApplicationContext context=new ClassPathXmlApplicationContext("regex.xml"); UserDao userDao= context.getBean("userProxy",UserDao.class); userDao.eat(); userDao.ea(); userDao.e(); userDao.sleep(); }
各位亲,这个办法你想到了吗?!接下来的我还会继续更新的哦!
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Spring系列.ApplicationContext接口 2020-06-11
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- 给你一份超详细 Spring Boot 知识清单 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 掌握SpringBoot-2.3的容器探针:实战篇 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash