`

aop:aspect

阅读更多
package com.albert.spring.proxy;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;

public class Interceptor
{
    public void before()
    {
        System.out.println("前置通知");
    }
    
    public void afterReturning()
    {
        System.out.println("後置通知");
    }
    
    public void beforeAdd(JoinPoint jp)
    {
        System.out.println("前置通知,獲取類名:" + jp.getTarget().getClass().getName());
        System.out.println("前置通知,獲取方法名:" + jp.getSignature().getName());
        System.out.print("前置通知,獲取參數:");
        for (Object obj : jp.getArgs())
        {
            System.out.print(obj + "\t");
        }
    }
    
    public void afterReturningRes(String result)
    {
        System.out.println("後置通知,返回結果:" + result);
    }
    
    public void after()
    {
        System.out.println("最終通知");
    }
    
    public void AfterThrowing()
    {
        System.out.println("例外通知");
    }
    
    public void catchException(Exception e)
    {
        System.out.println("獲取拋出的異常:" + e);
    }
    
    public Object around(ProceedingJoinPoint pjp)
        throws Throwable
    {
        System.out.println("進入環繞");
        // if(){ // 進行一些判斷,再執行環繞Object result = pjp.proceed();
        // }
        System.out.println("退出環繞");
        return result;
    }
}


 

<?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:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
	<aop:aspectj-autoproxy /><!-- 開啟切面編程功能-->
	<bean id="userDaoImp" class="com.albert.spring.proxy.aop.UserDaoImp" />
	<bean id="aspectBean" class="com.albert.spring.proxy.aop.Interceptor" />
	<aop:config>
	<!-- 聲明一個切麵類-->
		<aop:aspect id="asp" ref="aspectBean">
		<!-- 聲明一個切入點-->
			<aop:pointcut id="thecut"
				expression="execution(* com.albert.spring.proxy.aop.UserDaoImp.*(..))" />
			<aop:after-returning pointcut-ref="thecut"
				method="afterReturningRes" returning="result" />
			<aop:around pointcut-ref="thecut" method="around" />
			<aop:after-throwing pointcut-ref="thecut" method="catchException"
				throwing="e" />
			<aop:after pointcut-ref="thecut" method="after" />
			<aop:before pointcut-ref="thecut" method="before" />
			<aop:before pointcut-ref="thecut" method="beforeAdd" />
		</aop:aspect>
	</aop:config>

</beans>


 

分享到:
评论
2 楼 jiangm520 2011-06-03  
xurichusheng 写道
public Object around(ProceedingJoinPoint pjp) 
        throws Throwable 
    { 
        System.out.println("進入環繞"); 
        // if(){ // 進行一些判斷,再執行環繞Object result = pjp.proceed(); 
        // } 
        System.out.println("退出環繞"); 
        return result; 
    } 

这里面的变量 result 从哪来的?



这里  Object result = pjp.proceed(); 
只是注释的了
1 楼 xurichusheng 2011-06-03  
public Object around(ProceedingJoinPoint pjp) 
        throws Throwable 
    { 
        System.out.println("進入環繞"); 
        // if(){ // 進行一些判斷,再執行環繞Object result = pjp.proceed(); 
        // } 
        System.out.println("退出環繞"); 
        return result; 
    } 

这里面的变量 result 从哪来的?

相关推荐

    spring aop注解方式、xml方式示例

    在XML配置中,我们创建一个`&lt;aop:config&gt;`元素,并定义`&lt;aop:aspect&gt;`子元素来声明切面: ```xml &lt;aop:config&gt; &lt;aop:aspect id="loggingAspect" ref="loggingAspectBean"&gt; &lt;!-- ... --&gt; &lt;/aop:aspect&gt; &lt;/aop:...

    SPRING:aspect和advisor区别

    本文旨在深入探讨Spring AOP中的两个核心概念:`Aspect`与`Advisor`的区别,并通过具体的配置示例帮助读者更好地理解和应用这些概念。 #### 二、Aspect的概念解析 1. **定义**: - `Aspect`在Spring AOP中被称为...

    spring aop管理xml版

    在Spring框架中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种重要的设计模式,它扩展了传统的面向对象编程(OOP),使得我们可以将关注点分离,特别是那些横切关注点,如日志、事务管理、权限检查...

    基于xml配置的aop.zip

    在IT行业中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种强大的设计模式,它允许程序员将关注点从核心业务逻辑中分离出来,比如日志记录、事务管理等。Spring框架是Java领域实现AOP的一个流行工具...

    day39 07-Spring的AOP:自动代理

    当我们在配置文件中启用&lt;aop:aspectj-autoproxy/&gt;或在代码中使用@EnableAspectJAutoProxy注解时,Spring会自动为包含切面注解(@Aspect)的bean创建代理。 切面通常由以下几个部分组成: 1. **通知(Advice)**:这...

    Spring_AOP开发

    /beans&gt;四、基于 XML 配置进行 AOP 开发:在 XML 文件中配置切面、通知、切入点等信息,例如:&lt;aop:config&gt;&lt;aop:aspect id="myInterceptor" ref="myInterceptorBean"&gt;&lt;aop:before method="doAccessCheck" pointcut=...

    Xml配置实现AOP

    在XML配置中,我们需要定义`&lt;aop:config&gt;`标签来开启AOP功能,然后使用`&lt;aop:aspect&gt;`定义切面,`&lt;aop:before&gt;`、`&lt;aop:after&gt;`、`&lt;aop:around&gt;`等标签定义通知(advice),最后通过`&lt;aop:pointcut&gt;`定义切入点...

    spring使用动态代理面向切面编程(AOP) xml

    AOP的核心概念是切面(Aspect)、连接点(Join Point)、通知(Advice)、切入点(Pointcut)和织入(Weaving)。在Spring中,切面是封装了特定关注点的类,可以包含方法、属性和字段。连接点是在程序执行过程中能够...

    springAop的配置实现

    Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它允许我们通过分离关注点来简化应用程序的开发。在传统的面向对象编程中,业务逻辑与日志记录、事务管理、性能监控等横切...

    spring注解&XML配置AOP

    在Spring框架中,注解和XML配置是两种主要的方式来实现面向切面编程(Aspect-Oriented Programming,简称AOP)。AOP是一种编程范式,它允许程序员定义“切面”,这些切面封装了关注点,如日志、事务管理、性能监控等...

    spring aop

    对于基于XML配置的AOP,需要在Spring配置文件中定义`&lt;aop:config&gt;`元素来启用AOP支持,然后定义`&lt;aop:aspect&gt;`元素来声明切面,`&lt;aop:before&gt;`、`&lt;aop:after&gt;`、`&lt;aop:after-returning&gt;`、`&lt;aop:after-throwing&gt;`和`...

    spring_aop_xml.rar_java aop_xml aop

    在XML中,使用`&lt;aop:aspect&gt;`元素定义切面,并通过`ref`属性引用包含通知的bean。例如: ```xml &lt;aop:aspect ref="adviceBean"&gt; &lt;aop:before method="beforeAdvice" pointcut-ref="serviceMethods"/&gt; &lt;/aop:...

    Spring AOP 的实现例子(基于XML配置实现)

    我们可以通过`&lt;aop:aspect&gt;`标签定义一个切面,并通过`ref`属性指定切面对应的bean。 通知(Advice)定义了在连接点执行的具体行为,例如方法调用前执行的操作、方法调用后执行的操作等。Spring提供了五种类型的...

    对Spring的AOP标签的支持

    2. `&lt;aop:aspect&gt;`:此标签用于定义一个切面。每个切面可以包含多个通知和切入点。切面可以是基于bean的(使用`&lt;bean&gt;`标签定义)或者基于注解的(使用`@AspectJ`注解)。 3. `&lt;aop:pointcut&gt;`:这个标签用于定义一...

    SpringAOP1.zip

    在Spring配置文件中,我们可以使用`&lt;aop:config&gt;`元素来声明切面,`&lt;aop:pointcut&gt;`定义切点,`&lt;aop:advisor&gt;`或`&lt;aop:aspect&gt;`定义通知。 例如,下面是一个简单的切面定义: ```xml &lt;aop:config&gt; &lt;aop:pointcut ...

    基于java的企业级应用开发:AspectJ开发.ppt

    - `&lt;aop:aspect id="aspect" ref="myAspect"&gt;`创建了一个切面,id为`aspect`,引用了`myAspect` Bean。 - `&lt;aop:pointcut&gt;`定义了切入点,`expression`属性中的`execution(* com.itheima.jdk.*.*(..))`匹配`...

    征服Spring AOP—— Schema

    4. `&lt;aop:aspect&gt;`:定义一个切面,可以包含多个通知和切入点。切面可以看作是封装了多个相关通知的逻辑单元。 5. `&lt;aop:before&gt;`, `&lt;aop:after&gt;`, `&lt;aop:around&gt;`, `&lt;aop:after-returning&gt;`, `&lt;aop:after-throwing...

    spring xml方式配置aop

    4. **组装切面**:通过`&lt;aop:aspect&gt;`元素将通知与切入点组合成切面。在切面中,你可以定义多个通知并引用多个切入点: ```xml &lt;aop:aspect ref="myAspect"&gt; &lt;aop:before method="beforeMethod" pointcut-ref=...

Global site tag (gtag.js) - Google Analytics