public class StuTest {
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Sleepable s=(Sleepable)context.getBean("Service");
s.sleep();
}
}
复制代码
4、通过<aop:config>来配置(纯POJO切面)
<aop:advisor> 定义一个AOP通知者
<aop:after> 后通知
<aop:after-returning> 返回后通知
<aop:after-throwing> 抛出后通知
<aop:around> 周围通知
<aop:aspect>定义一个切面
<aop:before>前通知
<aop:config>顶级配置元素,类似于<beans>这种东西
<aop:pointcut>定义一个切点
public class MyAspect {
public void mybefore(){
System.out.println("前置增强");
}
public String myafterReturning(String Returning){
System.out.println("前置增强");
return Returning;
}
}
public class IserviceImpl implements Iservice{
public void log() {
System.out.println("开启事务");
}
public String dofirst() {
System.out.println("记录日志");
return "";
}
}
Spring的配置文件:
<!-- 目标对象 -->
<bean></bean>
<!-- 切面: -->
<bean></bean>
<!-- 配置切面 -->
<aop:config>
<!-- 配置切入点 -->
<aop:pointcut expression="execution(public * *..Iservice.log(..))"/>
<!-- 将类方法定义为最终增强并引用pointcut切入点-->
<aop:aspect ref="myAspect">
<aop:after method="myafterReturning" pointcut-ref="pointcut"/>
</aop:aspect>
</aop:config>
测试类
public class SpringTest {
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Iservice bean = (Iservice)context.getBean("Service");
bean.log();
String count=bean.dofirst();
System.out.println(count);
}
}