Spring學習筆記2

2022-07-02 18:30:12 字數 2600 閱讀 1726

一、什麼是aop

面向切面程式設計,通過預編譯方式和執行期動態**實現程式功能的統一維護的一種技術。

在不影響原來功能**的基礎上,使用動態**加入自己需要的一些功能(比如許可權的驗證,事務的控制,日誌的記錄等等),移除之後,並不影響原來的功能

面向切面程式設計是通過動態**實現的,是對物件導向思想的補充。

可以提供宣告式的事務管理。

aop的advice有哪些

1)before:在執行切入的方法之前,執行**

2)after returning:在執行切入的方法正常執行(沒有異常)之後,執行**

3)after throwing:在執行切入的方法發生異常的時候,執行**

4)after:在執行切入的方法無論是否發生異常,都必須最後執行**

二、配置切點和切面

1)找到需要加事務的方法(方法的定位,可以類似於萬用字元來定位)

execution(public * cn.com.bochy.dao.impl.userdaoimpl.insertuser(..))

開發中,事務的處理是在service層處理的,所以必須切入service層

execution(public * cn.com.bochy.service.impl.*.*(..))

2)找到之後,在方法開始之前,需要加上事務

對應advice:before

3)在方法執行中如果有異常,回滾

對應advice:after throwing

4)在方法執行中沒有異常,提交

對應advice:after returning

5)無論是否有異常,關閉釋放資源

對應advice:after

<

context:component-scan

base-package

="com.zy"

>

context:component-scan

>

<

aop:aspectj-autoproxy

proxy-target-class

="true"

>

aop:aspectj-autoproxy

>

切面類

package

com.zy.aop;

import

org.apache.log4j.logger;

import

org.aspectj.lang.annotation.after;

import

org.aspectj.lang.annotation.afterreturning;

import

org.aspectj.lang.annotation.afterthrowing;

import

org.aspectj.lang.annotation.aspect;

import

org.aspectj.lang.annotation.before;

import

org.aspectj.lang.annotation.pointcut;

import

org.springframework.stereotype.component;

@component

@aspect

public

class

myaop

@after("mypoint()")

public

void

myafter()

@afterreturning("mypoint()")

public

void

myafter2()

@afterthrowing("mypoint()")

public

void

myafter3()

//定義切點--寫註解---寫在某個方法上

@pointcut("execution(public * com.zy.dao.impl.userdaoimpl.login(..))")

public

void mypoint(){}//

傀儡 無任何意義

}

test類

package

test;

import

org.junit.test;

import

import

com.zy.service.impl.userserviceimpl;

public

class

mytest2

}

springmvc返回json

@responsebody

public object getuser()

//

//1到springmvc json包

中配置 (沒有這個會406)

//3controller中方法返回值改為object

//4在controller中方法上加@responsebody

spring學習筆記 2

spring對aop的支援 1 如果目標物件實現了介面,預設情況下會採用jdk的動態 實現aop 2 如果目標物件實現了介面,可以強制使用cglib實現aop 3 如果目標物件沒有實現了介面,必須採用cglib庫,spring會自動在jdk動態 和cglib之間轉換 如何強制使用cglib實現aop...

spring框架學習筆記2

springioc 1 責任鏈 我們使用mvc進行開發的時候,資料在各層之間進行傳遞,資料在業務層上構成乙個鏈條,這個鏈條成為責任鏈.2 基於責任鏈模式開發的缺點 責任鏈開發模式,我們發現層與層之間互相呼叫,造成層與層耦合性太高.3 解決的方案 spring ioc 控制反轉 4 實現 step 1...

決戰春招Spring學習筆記2

經過上次的學習和練習掌握了基於xml的ioc配置,用註解的配置不是很熟練但無傷大雅繼續往下學,以後在實戰中複習 aop為aspect oriented programming的縮寫,意為 面向切面程式設計 ioc是為了給 結耦,用反射的方式建立,降低 互相的依賴 那aop存在的意義是什麼?答 為了解...