必威体育Betway必威体育官网
当前位置:首页 > IT技术

AOP切面用aspectjweaver.jar实现代码

时间:2019-10-14 05:12:13来源:IT技术作者:seo实验室小编阅读:78次「手机版」
 

aspectjweaver

一、导入aspectjweaver.jar

二、创建一个类,使在执行方法之前之后调用

package com.ly.Spring.aop.advice;

public class AdviceRound {
/*创建两个方法,方法名随意,这里为方便区分,设为before即执行方法之前调用,after即执行方法之后调用*/
	 public void before(){
		 System.out.println("before之前调用");
	 }
	 public void after(){
		 System.out.println("after之后调用");
	 }
}

三、创建一个类。定义两个方法,当调用这些方法时,会使之之前调用before方法,之后调用after方法

 

package com.ly.spring.aop.aspectservice.impl;

import com.ly.spring.aop.AspectService.AspectService;

public class AspectServiceImpl implements AspectService{

	@Override
	public void print(String message) {
		System.out.println(message);
		
	}

	@Override
	public void save() {
		System.out.println("调用了save方法");
	}
 
}

四、创建spring中bean配置,需加入xmlns:aop="http://www.springframework.org/schema/aop"               http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-4.2.xsd">

<?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"
	xsi:schemaLocation="
	         http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context.xsd
             http://www.springframework.org/schema/aop
             http://www.springframework.org/schema/aop/spring-aop-4.2.xsd">

	<!--目标对象 -->
	<bean id="aspectservice" class="com.ly.spring.aop.AspectService.impl.AspectServiceImpl"/>
	
	<!-- advice通知 -->
	<bean id="adviceMessage" class="com.ly.spring.aop.advice.AdviceRound"></bean>
	
	<!-- aspectjweaver.jar中为以下配置 -->
	<aop:config>
	  <aop:aspect id="myaspect" ref="adviceMessage">
	    <!-- aop切点格式       匹配com.ittx.spring.aopservice.impl包下所有的类的所有方法。。
			         第一个*代表所有的返回值类型 
				第二个*代表所有的类 
				第三个*代表类所有方法 
				最后一个..代表所有的参数。
				也可以直接定位到此类的某个方法execution(* com.ly.spring.aop.AspectService.impl.AspectServiceImpl.print(..))-->
	    <aop:pointcut id="myPointcut" expression="execution(* com.ly.spring.aop.AspectService.impl.*.*(..))" />
	    <!--  pointcut-ref=""里面填的为 aop:pointcut中的id值-->
	    <aop:before method="before" pointcut-ref="myPointcut"/>
	    <aop:after method="after" pointcut-ref="myPointcut"/>
	  </aop:aspect>
	</aop:config>
	
</beans>

五、以下为测试类

package junittest;

import static org.junit.Assert.*;

import org.junit.Test;
import org.springframework.context.APPlicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.ly.spring.aop.AspectService.AspectService;

public class aoptest {

	@Test
	public void test() {
		ApplicationContext context=new ClassPathXmlApplicationContext("springBeans.xml");
		AspectService aspectService=(AspectService) context.getBean("aspectservice");
		aspectService.print("执行打印message代码");
		aspectService.save();
	}

}

相关阅读

Spring AOP 最热门面试题及答案

译者的话 之前去京东面试,被问到 AOP 相关的问题,之前一直没有系统地学习相关的知识,答得不是很好。趁着假期,找了一下相关的资料,CSDN

Spring AOP @After,@Around,@Before执行的顺序以及可

AOP中有@Before,@After,@Around,@AfterRunning注解等等。 首先上下自己的代码,定义了切点的定义 @Aspect @Component public class L

Spring AOP你了解多少呢?

1、Aop面向切面编程。纵向重复,横向抽取。2、代理  生活中的实例,找明星拍戏,上综艺…….直接找明星,说明明星太小,如果明星有点名气,

Spring AOP的实现原理(二)

**二、AOP的设计与实现 1、JVM的动态代理特性** 在Spring AOP实现中, 使用的核心技术时动态代理,而这种动态代理实

Spring-AOP @AspectJ切点函数之within()

概述 语法 实例 withincomxgjNaiveWaiter withincomxgj withincomxgj withincomxgjMark 概述 通过类匹配模式串声明切点

分享到:

栏目导航

推荐阅读

热门阅读