1. 程式人生 > >JavaWeb學習之路——SSM框架之Spring(六)

JavaWeb學習之路——SSM框架之Spring(六)

AOP:面向切面程式設計

1.介紹——AOP:面向切面程式設計。正常程式都是從上到下執行相關程式碼,aop是在縱向執行流程中新增橫切面, 從左到右的關係。不需要修改成語原有程式碼,它將程式碼動態的切入到類的指定方法、指定位置上的程式設計思想就是面向切面的程式設計。

特點:高擴充套件性、釋放原有功能部分邏輯

eg:一般程式執行順序,從上往下。

public class Demo {

     public static void demo1() {
           System.out.println("demo1");
     }

     public static void demo2() {

           System.out.println("demo2");
     }

     public static void demo3() {
           System.out.println("demo3");
     }

     public static void main(String[] args) {
           demo1();
           demo2();
           demo3();
     }
}

2.概念

(1)原有功能:切點,pointcut

(2)前置通知:在切點之前執行的功能,before advice

(3)後置通知:在切點之後執行的功能,after advice

(4)如果切點執行過程中出現異常,會觸發異常通知,throws advice

(5)所有功能總稱為切面

(6)織入:把切面嵌入到原有功能的過程

3.通知型別

(1)前置通知(Before advice):在某個連線點(Join point)之前執行的通知,但這個通知不能阻止連線點的執行(除非它丟擲一個異常)。

(2)返回後通知(After returning advice):在某個連線點(Join point)正常完成後執行的通知。例如,一個方法沒有丟擲任何異常正常返回。

(3)丟擲異常後通知(After throwing advice):在方法丟擲異常後執行的通知。

(4)後置通知(After(finally)advice):當某個連線點(Join point)退出的時候執行的通知(不論是正常返回還是發生異常退出)。

(5)環繞通知(Around advice):包圍一個連線點(Join point)的通知,如方法呼叫。這是最強大的一種通知型別。環繞通知可以在方法前後完成自定義的行為。它也會選擇是否繼續執行連線點或直接返回它們自己的返回值或丟擲異常來結束行。

4.AOP實現切面過程

工程目錄圖:

(1)切入類的介紹:

public class Demo {

     public  void demo1() {

           System.out.println("demo1");

     }

     public  void demo2() {

           System.out.println("demo2");

     }

     public  void demo3() {

           System.out.println("demo3");

     }

}

(2)在環境xml中配置dtd說明文件:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns:aop="http://www.springframework.org/schema/aop"

    xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsd

http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.0.xsd

http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd">

(3)對此物件的demo2()方法生成AOP切面:

<aop:config>

   <aop:pointcut expression="excution(* com.likui.test.Demo.demo2())" id="mypoint"/>

</aop:config>

</beans>

(4)形成前置和後置通知:新建前置通知類繼承前置介面

public class MyBeforeAdvice implements MethodBeforeAdvice{

     @Override

     public void before(Method arg0, Object[] arg1, Object arg2) throws Throwable {

           // TODO Auto-generated method stub

           System.out.println("執行前置通知!");

     }

}

新建後置通知類繼承後置通知介面

public class MyAfterAdvice implements AfterReturningAdvice{

     @Override

     public void afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3) throws Throwable {

           // TODO Auto-generated method stub

           System.out.println("執行後置通知!");

     }

}

(5)xml檔案中成前置、後置和切入類物件,對於切入點進行通知屬性配置:

<!-- 配置通知類物件 -->

<bean id="mybefore" class="com.likui.advice.MyBeforeAdvice"></bean>

<bean id="myafter" class="com.likui.advice.MyAfterAdvice"></bean>

<!-- 配置切面 -->

<aop:config>

<!-- 配置切點 -->

   <aop:pointcut expression="execution(* com.likui.test.Demo.demo2())" id="mypoint"/>

   <!-- 配置通知 -->

   <aop:advisor advice-ref="mybefore" pointcut-ref="mypoint"/>

   <aop:advisor advice-ref="myafter" pointcut-ref="mypoint"/>

</aop:config>

<!-- 配置類物件 -->

<bean id="demo" class="com.likui.test.Demo"></bean>

(6)測試類編寫:

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {

     public static void main(String[] args) {

           ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");

           Demo demo=ac.getBean("demo",Demo.class);

           demo.demo1();

           demo.demo2();

           demo.demo3();

     }

}

(7)對Demo類中demo2()方法進行前置和後置切面結果展示:

相關推薦

JavaWeb學習——SSM框架Spring(四)

SSM框架學習-Spring01 1,.Spring介紹 Spring 是一個開源框架,是為了解決企業應用程式開發複雜性而建立的。框架的主要優勢之一就是其分層架構,分層架構允許您選擇使用哪一個元件,同時為 J2EE 應用程式開發提供整合的框架。 2.功能 1)

JavaWeb學習——SSM框架Spring()

AOP:面向切面程式設計 1.介紹——AOP:面向切面程式設計。正常程式都是從上到下執行相關程式碼,aop是在縱向執行流程中新增橫切面, 從左到右的關係。不需要修改成語原有程式碼,它將程式碼動態的切入到類的指定方法、指定位置上的程式設計思想就是面向切面的程式設計。 特點:

JavaWeb學習——SSM框架Spring(五)

                                        整合Spring和Mybatis框架 1.在專案的lib下匯入如下jar包 匯入mybatis所有jar和spring的jar基本包,spring-jdbc,spring-tx,sprin

JavaWeb學習——SSM框架Mybatis(二)

1.簡介: 框架: 是整個或部分系統的可重用設計,表現為一組抽象構件及構件例項間互動的方法;另一種定義認為,框架是可被應用開發者定製的應用骨架。前者是從應用方面而後者是從目的方面給出的定義。它是一個半成品,一個框架是在一個給定的問題領域內,一個應用程式的一部分設計與實現。

JavaWeb學習——SSM框架Mybatis(三)

前提:JavaWeb學習之路——SSM框架之Mybatis(二) 1.目錄結構 2.目錄解釋: src下: pojo包:寫java檔案 serverlet包:寫serverlet檔案 service包:寫介面和它的實現類 mapper包:用來配置資料

JavaWeb學習——SSM框架SpringMVC(九)

SpringMVC跳轉、檢視解析器和@ResponseBody的用法 1.跳轉方式 (1)預設方式字串內容來轉發 (2)設定返回值內容轉發          新增redirect:資源路徑·  重定向          新增forward:資源路徑 或省略  轉發

JavaWeb學習——SSM框架SpringMVC(八)

SpringMVC引數傳遞:把內容寫到方法(HandlerMethod)引數中,SpringMVC只要有這個內容,則會注入,在這裡使用註解的方式來傳遞引數 1.在jsp檔案中設定提交動作 <form action="demo" method="post">

Spring框架學習(一)——Spring框架基本介紹

Spring的出現是為了取代EJB(Enterprise JavaBean)的臃腫、低效、脫離現實的缺點。Spring致力於J2EE應用的各層(表現層、業務層、持久層)的解決方案,Spring是企業應用開發的“一站式”選擇。 1.Spring定義: Spring是分層的J

Spring學習(四)spring對數據庫操作

date val mapr text core 導入 sed package assert 1、導入jdbc.jar、tx. jar包 2、測試 package com.junit; import static org.junit.Assert.*;

搭建SSM框架Spring

管理 com 銷毀 系列 try 要去 nco cati 慢慢 作為一枚大四準備畢業的學生,最重要的事便是畢業設計,前些日子剛剛拿到畢設題目:“3D網絡圖:面向網絡結構數據的可視化軟件設計”,(⊙o⊙)…,怎麽說哪,看到題目就是一頭霧水(前幾屆不都是學生選課系統,學生教

4.6 基於Spring-Boot的Mysql+jpa的增刪改查學習記錄 > 我的程式猿:第三十

    1.專案結構       -JDK  1.8       -SpringBoot  2.0.6     &nbs

spring boot 使用ssm框架登入

Spring Boot 開發Spring Boot的主要動機是簡化配置和部署spring應用程式的過程。 Spring Boot的主要特點: 建立獨立的Spring應用程式 直接嵌入Tomcat,Jetty或Undertow(無需部署WAR檔案) 提供“初始”的PO

SSM框架Spring的常用註解超級簡潔版

1.註冊物件 @Component("user") @Service("user") //service層 @Controller("user") //web層 @Repository("user") //dao層 2.修改物件的作用範圍 @Scope(scopeName="protot

SSM框架 Spring-AOP(面向切面程式設計)

1AOP概述 AOP(Aspect-Oriented Programming,面向切面程式設計):是一種新的方法論,是對傳統 OOP(Object-Oriented Programming,面向物件程式設計)的補充。兩種程式設計思想。是對面向物件程式設計的一種補充。 面向切

SSM框架Spring-AOP的理解與基本使用

logger SSM 框架學習 (Spring篇) 一、我對AOP的理解 什麼是切面程式設計:我們把一段程式執行流程比喻成一條水果大小分揀流水線,而AOP的思想就是可以在這個流水線的某個點設定一個檢查點,或者說大小過濾器,不同的過濾器能過濾不同大小的

4.6 基於Spring-Boot的Mysql+jpa的增刪改查學習記錄 > 我的程式猿:第三十

1.專案結構       -JDK  1.8       -SpringBoot  2.0.6       -Thymeleaf       -Hot Start         1.1 後臺(5個)       java\com\example\demo\beans\user.java        

SSM框架Spring-IoC和DI的理解與三種常用注入方式

SSM 框架學習 (Spring篇) 一、IoC和DI IoC(Inversion of Control)控制反轉Spring兩大核心之一,是一種不同於傳統的設計思想。 那何來控制反轉一說呢?我們先看傳統的Java程式設計,當我們一個類內部需要一個物

OpenCV學習——車牌識別車牌定位

pla sim srand oval 模糊 fault .html swa ide 去年七月份因為學校項目需要開始接觸圖像處理,但那時候只是到網上找車牌識別代碼,然後加入到自己的項目中,不清楚細節原理。 現在自己重新一步步實現車牌識別。 高斯模糊: 1 Mat Ga

App 組件化/模塊化——Android 框架組件(Android Architecture Components)使用指南

them 實體 storage form 查詢 app 開發 callback 後臺 pil 面對越來越復雜的 App 需求,Google 官方發布了Android 框架組件庫(Android Architecture Components )。為開發者更好的開發 App

搭建SSM框架SpringMVC

nco add 核心 c中 resource param tor val 不同的 一、SpringWebMVC概述: SpringWebMVC簡稱SpringMVC SpringMVC就是Spring框架提供的一個模塊,通過實現MVC模式來很好地將數據、業務與展現進行分離