1. 程式人生 > >AOP實現方式3——通過來配置(純POJO切面)

AOP實現方式3——通過來配置(純POJO切面)

1.定義介面Perform

package com.show;
/**
 * Created by kenneth on 2017/4/6.
 */
public interface Perform {
    void sing();
}

2.介面Perform的實現類Boy

package com.show;
/**
 * Created by kenneth on 2017/4/6.
 */
public class Boy implements Perform {
    @Override
public void sing() {
        System.out.println("男孩在唱歌
"); } }

3.定義通知PerformHelper

package com.show;
/**
 * Created by kenneth on 2017/4/6.
 */
public class PerformHelper {
    public void beforePerform() {
        System.out.println("表演之前要整理衣服");
}

    public void afterPerform() {
        System.out.println("表演之後要行禮");
}
}

4.Spring配置檔案

<?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/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!--目標物件--> <bean id="boy" class="com.show.Boy"/> <!--切面--> <bean id="performHelper" class="com.show.PerformHelper"/> <!--配置切入點--> <aop:config> <aop:pointcut id="pointcut" expression="execution(public * *..Perform.sing(..))"/> <aop:aspect ref="performHelper"> <aop:before method="beforePerform" pointcut-ref="pointcut"/> <aop:after method="afterPerform" pointcut-ref="pointcut"/> </aop:aspect> </aop:config> </beans>

5.測試類

package com.show;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * Created by kenneth on 2017/4/6.
 */
public class Test {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
Perform performer = (Perform) context.getBean("boy");
performer.sing();
}
}

6.測試結果

四月 06, 2017 2:02:38 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
資訊: Refreshing org[email protected]533ddba: startup date [Thu Apr 06 14:02:38 CST 2017]; root of context hierarchy
四月 06, 2017 2:02:38 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
資訊: Loading XML bean definitions from class path resource [ApplicationContext.xml]
表演之前要整理衣服
男孩在唱歌
表演之後要行禮

相關推薦

AOP實現方式3——通過配置POJO切面

1.定義介面Perform package com.show; /** * Created by kenneth on 2017/4/6. */ public interface Perform { void sing(); } 2.介面Perform的實現

Redis-3.x叢集配置RedisCluster+SpringBoot+Jedis

此文由本人蔘考其他大神文件和資料,再結合當前環境做出的配置,有什麼問題請聯絡我. 部署計劃 部署6個redis節點,為3主3從。 埠 IP地址

Spring的AOP實現方式—ProxyFactoryBean配置方式實現原始碼剖析

實現Aop功能有兩種方式, 1. ProxyFactoryBean方式: 這種方式是通過配置實現 2. ProxyFactory方式:這種方式是通過程式設計實現 這裡只說ProxyFactoryBean方式 首先說下具體的配置,一個例子如下: <beanid="t

Spring裡的aop實現方式和原始碼分析 java中代理,靜態代理,動態代理以及spring aop代理方式實現原理統一彙總

使用"橫切"技術,AOP把軟體系統分為兩個部分:核心關注點和橫切關注點。業務處理的主要流程是核心關注點,與之關係不大的部分是橫切關注點。橫切關注點的一個特點是,他們經常發生在核心關注點的多處,而各處基本相似,比如許可權認證、日誌、事務。AOP的作用在於分離系統中的各種關注點,將核心關注點和橫切關注點分離開來。

解析配置檔案自動裝配 DataSource + AbstractRoutingDataSource + AOP 實現動態資料來源 下:配置動態資料來源,AOP 進行使用

上篇文章中已經藉助 DynamicDataSourceBuilder 類從配置檔案中解析得到了預設資料來源和動態資料來源,接下來需要配置動態資料來源的“本體”,並藉助 AOP 動態的切換資料來源。 配置動態資料來源 AbstractRoutingDataSource 實現了 In

Spring_(3)通過xml配置bean+建立物件

先來看整體專案的結構 HelloWorld.java package com.spring.beans; public class HelloWorld { private String name; public void setName(String na

執行緒安全的Map的實現方式3

1. HashMap,TreeMap 未進行同步考慮,是執行緒不安全的。 2. HashTable 和 ConcurrentHashMap 都是執行緒安全的。區別在於他們對加鎖的範圍不同,HashTable 對整張Hash表進行加鎖,而ConcurrentHashMap將Hash表分為16桶(s

AOP實現方式

一、前言 AOP的一些理解 二、AOP相關概念 (1)AOP是什麼?AOP與攔截器的區別? 太抽象的不說,如果你知道Struts2的攔截器,攔截器就是應用的AOP的思想,它用於攔截Action以進行一些預處理或結果處理。而Spring的AOP是一種更通用的模式,可以攔截Spring管

Android : 跟我學Binder --- (2) AIDL分析及手動實現 Android : 跟我學Binder --- (1) 什麼是Binder IPC?為何要使用Binder機制? Android : 跟我學Binder --- (3) 深入程式碼實戰假裝有連結

一、關於Android日常開發中程序間通訊-AIDL   通常Android應用開發中實現程序間通訊用的最多的就是 AIDL,藉助 AIDL 編譯以後的程式碼能幫助我們進一步理解 Binder IPC 的通訊原理。但是無論是從可讀性還是可理解性上來看,編譯器生成的程式碼對開發者並不友好。比如一個 INano

Java框架之Spring AOP 面向切面程式設計 有哪幾種實現方式?如何選擇適合的AOP實現方式

文章目錄 1. 實現方式 2. JDK動態代理如何實現? 2.1 主要的實現過程 3. 如何選擇? 1. 實現方式 JDK 動態代理實現和 cglib 實現 2. JDK

Nginx+Tomcat實現不同專案域名對映配置超詳細

1.域名:先解析一個域名對應固定伺服器IP,例域名:www.csdnTest.com對映伺服器IP:116.110.78.1202.本機主機:在伺服器(116.110.78.120)上編輯本機主機配置檔案,命令:vi  /etc/hosts,在"127.0.0.1 local

系統運維:DNS通過軟路由Quagga’s OSPF實現負載均衡

概要說明 DNS是非常重要的服務,需要保證業務的安全性,可靠性與可用性。 原始的DNS主從結構雖然能夠實現DNS的主備,但是無法使用統一的IP對外服務。所以我們將OSPF引入,多臺DNS伺服器都配置統一的VIP作為業務IP,統一對外服務。 LVS+DNS遇到的問題(keepalived軟體bug

配置阿里雲 II】xampp多站點配置設定虛擬域名頂替預設載入dashboard修改方式

在xampp環境中,為了方便的管理多個專案,需要通過配置相關檔案來設定多個虛擬站點。        如果不配置虛擬埠,專案上線會發生如下情況:        在域名繫結ip後(應用程式池中網站也設定好指向),dns解析沒問題情況下 但是本地瀏覽器訪問時用域名+專案名訪問時

OpenCV3.3.0安裝配置opencv3.3.0+VS2015社群版+64位win7

博主是一名準研究生,研究生階段準備學習計算機視覺方向,涉及影象識別和處理,選擇安裝opencv庫作為前期學習工具,因為不懂,所以在網上看了許多關於opencv安裝配置的資料和部落格,最後終於成功了。(哭,opencv一共下載了2.2.9,2.2.11,3.0

java web日誌記錄之spring aop實現方式

實現思路:spring aop切入到bean,在需要寫日誌的方法加入註解AuditLog,如果沒有註解的方法則不記錄日誌。 註解類 @Target({ElementType.PARAMETER, ElementType.METHOD}) @Retention(Ret

C語言通過邏輯運算與或非實現加法

1.加法器:首先看看下面的內容,瞭解一下什麼是加法器 本部分摘自:http://jpkc.nwpu.edu.cn/dzjc/diangongdz/wangluokecheng/dianzijishu/

4.3通過FactoryBean配置bean

FactoryBean介紹 一般情況下,Spring通過反射機制利用bean的class屬性指定實現類來例項化bean 。在某些情況下,例項化bean過程比較複雜,如果按照傳統的方式,則需要在中提供大量的配置資訊,配置方式的靈活性是受限的,這時採用編碼的

Java實現poi方式讀取word檔案內容不帶格式

宣告:文章為原創,程式碼也是經過網上查詢整理的,如有雷同,合情合理,博主很誠實。 1.此技術分享實現Java程式從word文件中讀取文字內容儲存為字串,很簡單。 2.準備工作:poi的jar包,我用的是3.16版本,官網上下載就可以,找不到的可以留言聯絡我。

Redis-3.2.4叢集配置RedisCluster+SpringBoot+Jedis

來源http://blog.csdn.net/zhe1110/article/details/52993082 部署計劃 部署6個redis節點,為3主3從。 埠 IP地址 6379 192.168.10

javaWeb基礎之Servlet的三種實現方式以及兩種配置方式

一、Servlet的三種實現方式 Servlet(Server Applet)是Java Servlet的簡稱,稱為小服務程式或服務聯結器,用Java編寫的伺服器端程式,主要功能在於互動式地瀏覽和修改資料,生成動態Web內容。 1、Servlet的第一種建立方式:繼承Ht