文档章节

AspectJ 入门例子

秋氺
 秋氺
发布于 2016/08/12 13:18
字数 239
阅读 104
收藏 1

所需要的包

<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>1.8.9</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.8.9</version>
		</dependency>

1.定义一个接口

public interface IStudent {

	public void hello(String name);
}

2.实现上面的接口

public class StudentImpl implements IStudent{

	public void hello(String name) {
		System.out.println("我的名字叫:"+name);
	}
}

3.定义切面类

import org.aspectj.lang.JoinPoint;

public class StudentAdvice {

	public void logBefore(JoinPoint joinPoint) {
		System.out.println("方法执行前执行");
	}
	public void logAfter(JoinPoint joinPoint) {
		System.out.println("方法执行后执行");
	}
}

4.定义applicationContext.xml

<aop:aspectj-autoproxy />

	<bean id="student" class="com.aop.StudentImpl" />
	<!-- Aspect -->
	<bean id="logAspect" class="com.aop.StudentAdvice" />

	<aop:config>
		<aop:aspect id="aspectLoggging" ref="logAspect" >
			<!-- @Before -->
			<aop:pointcut id="pointCutBefore"
				expression="execution(* com.aop.IStudent.hello(..))" />
			<aop:before method="logBefore" pointcut-ref="pointCutBefore" />
			
			<!-- @After -->
			<aop:pointcut id="pointCutAfter"
				expression="execution(* com.aop.IStudent.hello(..))" />
			<aop:after method="logAfter" pointcut-ref="pointCutAfter" />
			
		</aop:aspect>
	</aop:config>	

5.创建测试类

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
		IStudent student = ac.getBean("student", IStudent.class);
		student.hello("张三");

方法执行前执行
我的名字叫:张三
方法执行后执行

© 著作权归作者所有

共有 人打赏支持
秋氺
粉丝 0
博文 33
码字总数 6555
作品 0
海淀
程序员
Spring中的AOP(一)——AspectJ的基本使用

AOP(Aspect Orient Programming),也就是面向切面编程,作为面向对象编程的一种补充,当前已经成为一种比较成熟的编程思想,其实AOP问世的时间并不长,甚至在国内的翻译还不太统一(另有人...

摆渡者
2014/03/13
0
1
2014-03-11 Spring的学习(3)------面向切面编程(AOP)

AOP概念 首先让我们从一些重要的AOP概念和术语开始。这些术语不是Spring特有的。不过AOP术语并不是特别的直观,如果Spring使用自己的术语,将会变得更加令人困惑。 切面(Aspect):一个关注...

查封炉台
2014/03/11
0
0
spring aop 申明了切面类之后,如何申明切入点呢?

8.2.3 Declaring a pointcut Recall that pointcuts determine join points of interest, and thus enable us to control when advice executes. Spring AOP only supports method execution......

Oscarfff
2015/04/08
0
0
使用Spring进行面向切面编程(AOP)

转载于http://www.blogjava.net/supercrsky/articles/174368.html 文章太长,写的很好,没看完,转过来慢慢理解,品味 简介 面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方...

zmf
2014/09/04
0
0
《Spring Recipes》第三章笔记1:Enabling AspectJ Annotation

《Spring Recipes》第三章笔记:Enabling AspectJ Annotation 问题 如何开启Spring容器对AspectJ注解的支持。 解决方案 在配置文件中引入aop schema,添加<aop:aspectj-autoproxy />配置。 ...

LiJIaming
2012/05/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Nexus Repository Manager 搭建私有docker仓库

Nexus Repository Manager 搭建私有docker仓库 2018年05月08日 14:44:23 阅读数:115 1.下载nexus3的镜像: docker pull sonatype/nexus3 2.使用镜像启动一个容器: docker run -d --name n...

linjin200
10分钟前
0
0
大数据技术的发展趋势

大数据领域已经涌现出了大量新的技术,它们成为大数据采集、存储、处理和呈现的有力武器。这些技术下一步将如何发展?它们之中哪些技术 将广为流行?又会诞生哪些新的技术? 技术趋向多样化,...

董黎明
12分钟前
1
0
谷歌浏览器插件入门示例

实现:任何网址实现图片下载和获取当前域名的cookies的json字符串。 图片下载是给小白用的,可以选中批量下载,获取cookies 是为了方便程序员调试用。 获取cookies: git地址: https://gite...

NLGBZJ
14分钟前
2
0
152. Maximum Product Subarray - LeetCode

Question 152. Maximum Product Subarray Solution 题目大意:求数列中连续子序列的最大连乘积 思路:动态规划实现,现在动态规划理解的还不透,照着公式往上套的,这个问题要注意正负,需要...

yysue
15分钟前
0
0
IDEA工具 jdk,tomcat,maven 配置

设置JDK、tomcat、maven的版本 一、JDK      如果下拉列表没有,SDKS ---> + ----> 选择下载的JDK目录 ---> APPLY OK    二、tomcat 三、Maven    四、生成 git 本地创库...

君千殇520
15分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部