论坛首页 Java企业应用论坛

我对AOP的理解

浏览 35227 次
该帖已经被评为精华帖
作者 正文
   发表时间:2012-04-15  
挺有条理的,知道了AOP是这么发展了的
0 请登录后投票
   发表时间:2012-04-16  
dbdbgs 写道
挺有条理的,知道了AOP是这么发展了的

0 请登录后投票
   发表时间:2013-01-11  
遇到一个问题求教楼主:
@Aspect
public class Ti {
    @Around("execution(@Asit * *(..))")
    public Object around(ProceedingJoinPoint pjp){
                System.out.println("run Aspect...");
    }
}

public class Actpt {
	@Asit
	public static void main(String[] args) {
		System.out.println("!!!!!!!111");
	}
}

public @interface Asit {
}

这样运行拦截不到,不显示 "run Aspect...",求指教!
0 请登录后投票
   发表时间:2013-01-12  
raykcn 写道
遇到一个问题求教楼主:
@Aspect
public class Ti {
    @Around("execution(@Asit * *(..))")
    public Object around(ProceedingJoinPoint pjp){
                System.out.println("run Aspect...");
    }
}

public class Actpt {
	@Asit
	public static void main(String[] args) {
		System.out.println("!!!!!!!111");
	}
}

public @interface Asit {
}

这样运行拦截不到,不显示 "run Aspect...",求指教!


@interface咋定义的,需要RetentionPolicy.RUNTIME
0 请登录后投票
   发表时间:2013-01-12   最后修改:2013-01-12
引用
@interface咋定义的,需要RetentionPolicy.RUNTIME


是我上面写的那样定义的,我是想做个拦截器,话说其实不用RetentionPolicy.RUNTIME应该也可以,但是是否在其他地方也要配置什么呢?
额,我加入了RetentionPolicy.RUNTIME 测试了,效果一样,还是不显示 “run Aspect...” 。
我没有用到 struts spring 只是用的Aspectjrt、Aspectjweaver这两个包。

又或是麻烦楼主 基于我上面的三个类 修改一下 让拦截器生效就行,呵呵 麻烦楼主了,万分感激!!
我Google一圈,提到Aspect的都有spring或struts2,实在是没看到独立介绍的实例。
0 请登录后投票
   发表时间:2013-01-13  
raykcn 写道
引用
@interface咋定义的,需要RetentionPolicy.RUNTIME


是我上面写的那样定义的,我是想做个拦截器,话说其实不用RetentionPolicy.RUNTIME应该也可以,但是是否在其他地方也要配置什么呢?
额,我加入了RetentionPolicy.RUNTIME 测试了,效果一样,还是不显示 “run Aspect...” 。
我没有用到 struts spring 只是用的Aspectjrt、Aspectjweaver这两个包。

又或是麻烦楼主 基于我上面的三个类 修改一下 让拦截器生效就行,呵呵 麻烦楼主了,万分感激!!
我Google一圈,提到Aspect的都有spring或struts2,实在是没看到独立介绍的实例。

如把代码站内信我,我看下吧
0 请登录后投票
   发表时间:2013-01-13   最后修改:2013-01-13
站内信附件代码已发送,请查收,万分感谢楼主!

并且刚才我找了一篇博文:
http://www.cnblogs.com/louzj82/archive/2010/04/28/1722967.html
我原样做,都不行,就是不能切入。
我用 HelloWorld MainTest 还有 annotation的AspectjAn  一共三个类。jar是aspectjweaver.jar和aspectjrt.jar是1.7.1版本的,从eclipse官方下载的
0 请登录后投票
   发表时间:2013-01-14  
raykcn 写道
站内信附件代码已发送,请查收,万分感谢楼主!

并且刚才我找了一篇博文:
http://www.cnblogs.com/louzj82/archive/2010/04/28/1722967.html
我原样做,都不行,就是不能切入。
我用 HelloWorld MainTest 还有 annotation的AspectjAn  一共三个类。jar是aspectjweaver.jar和aspectjrt.jar是1.7.1版本的,从eclipse官方下载的

1、
package com.tes;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
public @interface Asit {

}

2、
package com.tes;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;

@Aspect
public class Ti {

	@Around("execution(@com.tes.Asit * *(..))")
	public Object around(ProceedingJoinPoint pjp) {
	      
		System.out.println("run Aspect...");
		return pjp.proceed();
	}

}

方法签名是这样的:
public Object around(ProceedingJoinPoint pjp) ;

3、
package com.tes;


public class Actpt {

	@Asit
	public void test() {
		System.out.println("!!!!!!!111");
	}

}


4、配置文件
  
    <bean id="actpt" class="com.tes.Actpt"/>        
    <bean class="com.tes.Ti"/>
    <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
    
0 请登录后投票
   发表时间:2013-01-14  
jinnianshilongnian 写道

4、配置文件
    <bean id="actpt" class="com.tes.Actpt"/>        
    <bean class="com.tes.Ti"/>
    <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>

不理解,我没有用spring,只是想用aspectj,所以没有用配置文件。
楼主看一下这个博文:
http://www.cnblogs.com/louzj82/archive/2010/04/28/1722967.html
并没有用到配置文件。

继续求解!!!
0 请登录后投票
   发表时间:2013-01-14  
raykcn 写道
jinnianshilongnian 写道

4、配置文件
    <bean id="actpt" class="com.tes.Actpt"/>        
    <bean class="com.tes.Ti"/>
    <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>

不理解,我没有用spring,只是想用aspectj,所以没有用配置文件。
楼主看一下这个博文:
http://www.cnblogs.com/louzj82/archive/2010/04/28/1722967.html
并没有用到配置文件。

继续求解!!!


1切入点错了,应该为    @Around("execution(@com.tes.Asit * *(..))") 
2 环绕通知也不是那么写
都是语法错误
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics