春の伝統のAOPの実装

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/shunli008/article/details/99702026

春AOP強化タイプ

org.aopalliance.aop.Interface.Advice定義アドバイスAOPアライアンス通知
対象クラスのメソッドの通知の接続点位置に応じてスプリングの関連情報は、5つのカテゴリーに分けることができます

  1. アドバイスの前に、org.springframework.aop.MethodBeforeAdvice

    ターゲットを向上させる前者の方法で

  2. アドバイスを帰国後org.springframework.aop.AfterReturningAdvice

    強化ターゲット実行メソッドの実装前に、

  3. アドバイスの周りの組織、aopalloance.intercept.MethodInterceptor

    エグゼクティブの実施を強化するために、ターゲットメソッドの前と後

  4. 例外が通知をスローされますorg.springframework.aop.ThrowsAdvice

    拡張メソッドの実装は、例外をスローした後、

  5. 通知org.springframework.aop.InteroductionInterceptorの紹介

    ターゲットクラスに新しいメソッドとプロパティを追加する(使用しません)

AOPアスペクトタイプ

  • 顧問:一般的なセクションに代わって、アドバイス自体は、すべてのメソッドを傍受するターゲットクラスのセクションです
  • PointcutAdvisor:特定のカットオフ点の代わりにセクション、あなたがターゲットクラスを迎撃するためにどの方法を指定することができます
  • IntrodcutionAdvisor:通知部の使用を導入するための導入部代表は(未使用します)

設定ファイルに追加する最初の必要性
ここに画像を挿入説明

その後、applicationContext.xmlを中に配置されています。

<!-- 配置目标类 -->
<bean id="studentDao" class="com.shunli.ioc.demo6.StudentDaoImpl"></bean>

<!-- 前置通知类型 -->
<bean id = "myBeforeAdvice" class="com.shunli.ioc.demo6.MyBeforeAdvice"></bean>

<!-- Spring的AOP产生代理对象 -->
<bean id="studentDaoProxy" class ="org.springframework.aop.framework.ProxyFactoryBean">
	<!-- 配置目标类 -->
	<property name="target" ref="studentDao"></property>
	<!-- 实现的接口 -->
	<property name="proxyInterfaces" value = "com.shunli.ioc.demo6.StudentDao"></property>
	<!-- 采用拦截的名称 -->
	<property name="interceptorNames" value="myBeforeAdvice"></property>
</bean>

でStudentDao.java

package com.shunli.ioc.demo6;

public interface StudentDao {
	public void find();
	
	public void save();
	
	public void update();
	
	public void delete();
}

StudentDaoImpl.java

package com.shunli.ioc.demo6;

public class StudentDaoImpl implements StudentDao{

	@Override
	public void find() {
		System.out.println("find.....");
		
	}

	@Override
	public void save() {
		System.out.println("save.....");
		
	}

	@Override
	public void update() {
		System.out.println("update.....");
		
	}

	@Override
	public void delete() {
		System.out.println("delete.....");
		
	}

}

MyBeforeAdvice.java

package com.shunli.ioc.demo6;

import java.lang.reflect.Method;

import org.springframework.aop.MethodBeforeAdvice;

public class MyBeforeAdvice implements MethodBeforeAdvice{

	@Override
	public void before(Method method, Object[] args, Object target) throws Throwable {
		System.out.println("前置增强......");
		
	}

}

demo中

package com.shunli.ioc.demo6;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.annotation.Resource;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Demo {
	
    @Resource(name="studentDaoProxy")
    private StudentDao studentDao;

    @Test
    public void demo1(){
    	System.out.println("----------------------------------");
        studentDao.find();
        studentDao.save();
        studentDao.update();
        studentDao.delete();

    }
}

おすすめ

転載: blog.csdn.net/shunli008/article/details/99702026