<七>AOP面向切面——配置bean.xml文件方式声明切面(附源码)
2014-11-30 19:30
786 查看
上一节为注解方式声明切面,现在通过配置bean.xml文件的形式来配置。
1、将上面的MyInterceptor变成一个普通的java类,即去掉@Aspect这样的注解。并将参数去掉。
2、beans.xml文件
说明:
3、测试SpringAOPTest.java
完成。
源码下载:
点击打开链接
1、将上面的MyInterceptor变成一个普通的java类,即去掉@Aspect这样的注解。并将参数去掉。
package cn.itcast.service; import org.aspectj.lang.ProceedingJoinPoint; /** * 切面 * */ public class MyInterceptor { public void doAccessCheck() { System.out.println("前置通知:"); } public void doAfterReturning() { System.out.println("后置通知"); } public void doAfter(){ System.out.println("最终通知"); } public void doAfterThrowing(){ System.out.println("例外通知"); } public Object doBasicProfilling(ProceedingJoinPoint pjp) throws Throwable{ System.out.println("进入方法"); Object result=pjp.proceed(); System.out.println("退出方法"); return result; } }
2、beans.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://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <aop:aspectj-autoproxy/> <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean"/> <bean id="aspectbean" class="cn.itcast.service.MyInterceptor"/> <aop:config> <aop:aspect id="asp" ref="aspectbean"> <aop:pointcut id="mycut" expression="execution(* cn.itcast.service.impl.PersonServiceBean.*(..))" /> <aop:before pointcut-ref="mycut" method="doAccessCheck" /> <aop:after-returning pointcut-ref="mycut" method="doAfterReturning"/> <aop:after-throwing pointcut-ref="mycut" method="doAfterThrowing"/> <aop:after pointcut-ref="mycut" method="doAfter"/> <aop:around pointcut-ref="mycut" method="doBasicProfilling"/> </aop:aspect> </aop:config> </beans>
说明:
<aop:pointcut id="mycut" expression="execution(java.lang.String cn.itcast.service.impl.PersonServiceBean.*(..))" /> 将会只拦截cn.itcast.service.impl.PersonServiceBean类中的返回值为string类型的方法 <aop:pointcut id="mycut" expression="execution(* cn.itcast.service.impl.PersonServiceBean.*(java.lang.String,..))" /> 将会只拦截cn.itcast.service.impl.PersonServiceBean类中的参数有string类型的方法 <aop:pointcut id="mycut" expression="execution(!void cn.itcast.service.impl.PersonServiceBean.*(..))" /> 将会只拦截cn.itcast.service.impl.PersonServiceBean类中的返回值不为空的方法 spring发现前面定义的切口的类有实现接口,则用jdk的创建代理技术进行创建代理对象; 如果没有实现接口,则用CGlib来创建代理对象
3、测试SpringAOPTest.java
package junit.test; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.itcast.service.PersonService; public class SpringAOPTest { @BeforeClass public static void setUpBeforeClass() throws Exception { } @Test public void interceptorTest(){ ApplicationContext cxt = new ClassPathXmlApplicationContext("beans.xml"); PersonService personService = (PersonService)cxt.getBean("personService"); personService.save("chen"); personService.getPersonName(3); //personService.update("ning", 4); } }
完成。
源码下载:
点击打开链接
相关文章推荐
- <六>AOP面向切面——注解方式声明切面(附源码)
- AOP实现_AOP中的概念_注解方式_XML配置方式声明切面
- <三>Ioc控制反转——bean.xml注入对象、值和集合(附源码)
- spring学习笔记8--使用spring进行面向切面的(AOP)编程(2)XML配置方式
- <转>用已经存在的xml文件作为flex柱状图饼状图等数据源的方式有几种?
- SPRING IN ACTION 第4版笔记-第二章WIRING BEANS-008-在XML配置文件中引入JAVA配置文件 <import> 、<bean>
- spring框架,可以没有spring.xml(即配置<beans>的文件吗?即不使用xml方式配置,而是只使用注解的方式配置
- AOP实现方式3——通过<aop:config>来配置(纯POJO切面)
- Spring配置文件中使用ref local与ref bean的区别. 在ApplicationResources.properties文件中,使用<ref bean>与<ref local>方法如下
- Spring学习一:IOC(控制反转)和AOP(面向切面)的xml配置和注解方式
- spring注解时AOP失效,XML配置<bean>正常
- <四>Ioc控制反转——为bean.xml瘦身第一步(附源码)
- web.xml配置中的<mime-mapping>
- struts.xml配置文件中result的语法:<result name="" type="">xxxxx</result>
- struts2中的配置文件的<constant>标签(struts.xml自动加载)
- spring中读取xml配置文件、获取bean的几种方式
- 关于spring切面使用<aop:aspectj-autoproxy/>报错的解决方法
- Spring配置文件中使用ref local与ref bean的区别. 在ApplicationResources.properties文件中,使用<ref bean>与<ref local>方法如下
- <h1>读取配置文件失败</h1>这通常意味着文件中有语法错误,请检查下面显示出的错误。<br /><br /><iframe src="show_config_errors.php" />
- spring中读取xml配置文件、获取bean的几种方式