第15春Frameworkのソースコード解析IOC AOP

githubのソースアドレス
春の公式ウェブサイトのアドレス

AOP

トランザクションログの許可の確認に使用されるパラメータ

Q:AOPとは何ですか
A:1アスペクト指向プログラミング(アスペクト指向programe)は、そのプログラミングのアイデアは、デカップリングの目的を達成するための課題と主要なビジネス・ロジック・切断交差することである
。2.人気話すのメソッドの前にありますか物事の処理後(ログ取引権限検証パラメータ)
3対応するオブジェクト指向プログラミング(アスペクトオブジェクトprograme)がトップダウンで、再利用コードの問題を解決する
4.基本原理は、プロキシデザインパターンということです

@Transactional实现思路:
1.声明注解:Transactional  也可以自定义注解
2.声明AOP类处理有Transactional注解的方法  (比如:在方法之前开启事务 方法之后提交事务)

//官网实现AOP类步骤: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#aop-ataspectj
1.项目添加切面支持(Enabling @AspectJ Support),两种方式(注解 和 xml)
2,声明切面类 (Declaring an Aspect),加注解@Aspect 还要加@Aspect
3,声明切点位置(Declaring a Pointcut)   @Pointcut("execution(* com.base.web.service.*.*(..))")
4.写增强方法并声明增强类型(Declaring Advice)

//切点类型汇总 九种
within     @within
target     @target
args       @args
execution  @annotation   this


//增强类型汇总
@Before
@After
@AfterReturning
@AfterThrowing
@Around


//案例
package com.base.springAop;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class YmAspect {

    @Pointcut("execution(* com.base.web.service.*.*(..))")
    private void pointCut(){

    };

    @Before("com.base.springAop.YmAspect.pointCut()")
    public void before(){
        System.out.println("切面类里面的前置增强方法执行了");
    }

    @After("com.base.springAop.YmAspect.pointCut()")
    public void after(){
        System.out.println("切面类里面的后置增强方法执行了");
    }
	
   @Around("com.aop.DIY.DiyAspect.pointCut()")
   public Object around(ProceedingJoinPoint pjp){      
       Object proceed = null;
       try {
           proceed = pjp.proceed();
       } catch (Throwable throwable) {
          throwable.printStackTrace();
       }       
         return proceed;
  }
}

章01手書き春総務フレーム

プログラミングは、トランザクションおよび(+反射をプログラミングする事務の原則を使用して)transaction文に分かれています

トランザクション特性:酸

トランザクション原子性不可分まあに含まれるすべての操作はすべてが順調に成功バックにロール
(総変更せずに2つのアカウントを追加し、AとBの各転送)データ一貫性、整合性の変化の全体的な状態
絶縁絶縁を:AとB 2つのトランザクション、Bウェルに開始前に実行、または互いに達成複数の同時トランザクションから分離されたBの終了時に実行行くに
耐久性耐久性:トランザクションがコミットされると、データベースへの変更は、さらに、永久的ですトランザクションを完了するために実行する必要があり、データベースに障害が発生します

1.自定义注解
2.封装编程式事务 第一章
3.扫包,定义一个事务扫包AOP,利用反射机制判断是否有注解
公開された172元の記事 ウォンの賞賛0 ビュー5695

おすすめ

転載: blog.csdn.net/weixin_44635157/article/details/104573807