## 一,一些基本概念
Spring除了IOC容器之外,另一大核心就是AOP了。Spring 中AOP是通過AspectJ來實現的。

首先來看下AOP 的相關概念:
1,Aspect
對橫切性關注點的模塊化。
2,Advice
對橫切性關注點的具體實現
3,Cross Cutting Concern
一種獨立服務,它會遍布在系統的處理流程之中。
4,PointCut
定義了Advice應用到哪些JoinPoint上,對Spring來說是方法的調用
5,Weave
將Advice應用到Target Object上的過程叫做織入,Spring支持的是動態織入。
6,Target Objet
Advice被應用的對象
7,Proxy
Spring AOP 默認使用JDK的動態代理,它的代理是運行時創建的,也可以使用CGLIB代理
8,Introduction
可以動態的為類添加方法。
9,JointPoint
Advice在應用程序上執行的時機,而spring只支持方法JointPoint,這點也可以使屬性修改
## 二,采用Annotation方式實現AOP
###1,引入AspectJ的Jar包:

###2,定義Aspect
將橫切點——檢查安全性模塊化,寫入SecurityHandler類中。
###3,采用注解指定SecurityHandler為Aspect

###4,采用注解定義Advice和Pointcut
~~~
@Aspect
public class SecurityHandler {
/*PointCut定義了Advice應用到哪些JointPoint上,對Spring來說是方法的調用
* 定義Pointcut,Pointcut的名稱為addMethod(),此方法沒有返回值和參數
* 該方法就是一個標識,不進行調用
* */
@Pointcut("execution(* add*(..))")
private void addMethod(){
}
/*
* 定義Advice(對橫切性關注點的具體實現),表示我們的Advice應用到哪些pointcut訂閱的Joinpoint上
* */
@Before("addMethod()")
private void checkSecurity(){
//TODO:放入檢查安全性的方法
System.out.println("--------checkSecurity------------");
}
}
~~~
###5,啟用AspectJ對Annotation的支持,并且將目標類和Aspect類配置到IoC容器中

## 三,采用靜態配置文件方式實現AOP
對于前面的SecurityHandler類,只留下Advice的方法體:
~~~
public class SecurityHandler {
private void checkSecurity(){
//TODO:Some things
System.out.println("--------checkSecurity------------");
}
}
~~~
將應用時機,應用時機與具體實現的關聯放到配置文件中:

概念好多,但是總的來說,就兩方面,一個是我要切入的方法,一個是我要定義在什么時候切入這個方法,放到類上說,就是把切面對象的方法應用到目標對象。
- 前言
- Spring簡化配置
- Spring中使用AspectJ實現AOP
- Spring中JDK的動態代理和CGLIB代理的區別
- Spring配置問題——元素 "context:component-scan" 的前綴 "context" 未綁定
- Hibernate中編程式事物的簡單使用
- 使用Spring為Hibernate配置聲明式事物
- Struts2+AJAX獲取json數據
- 中間件概述
- EJB(Enterprise Java Bean)概述
- JBoss 6.1安裝配置問題
- EJB對象的部署及客戶端調用簡單示例
- 有狀態的EJB對象和無狀態的EJB對象
- EJB遠程調用和本地調用
- MyBatis——入門select