`
fightforjava
  • 浏览: 29330 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

spring2.0集成aspectJ注解与JDK1.6冲突

阅读更多

spring2.0集成aspectJ注解与JDK1.6冲突,如下:

切面类SecurityHandler .java

package com.bjsxt.spring;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;

/**
 * 定义Aspect
 * @author Administrator
 *
 */
@Aspect
public class SecurityHandler {
   
    /**
     * 定义Pointcut,Pointcut的名称就是allAddMethod,此方法不能有返回值和参数,该方法只是一个
     * 标识
     *
     * Pointcut的内容是一个表达式,描述那些对象的那些方法(订阅Joinpoint)
     */
    @Pointcut("execution(* com.bjsxt.spring.UserManagerImpl.add*(..))")
    private void pointCutMethod(){};
   
    /**
     * 定义Advice,标识在那个切入点何处织入此方法
     */
    @Before("pointCutMethod()")
    private void checkSecurity() {
        System.out.println("----------checkSecurity()---------------");
    }
   
}
目标对象类:UserManagerImpl.java

package com.bjsxt.spring;

public class UserManagerImpl implements UserManager {

    public void addUser(String username, String password) {
        System.out.println("-------UserManagerImpl.addUser()----------");
    }

    public void deleteUser(int id) {
        System.out.println("-------UserManagerImpl.deleteUser()----------");
    }

    public String findUserById(int id) {
        System.out.println("-------UserManagerImpl.findUserById()----------");
        return null;
    }

    public void modifyUser(int id, String username, String password) {
        System.out.println("-------UserManagerImpl.modifyUser()----------");
    }
   
}

applicationContext.xml

<?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"
         xmlns:tx="http://www.springframework.org/schema/tx"
         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
    <aop:aspectj-autoproxy/>
    <bean id="securityHandler" class="com.bjsxt.spring.SecurityHandler"/>          
    <bean id="userManager" class="com.bjsxt.spring.UserManagerImpl"/>
</beans>
测试客房端类:Client.java

package com.bjsxt.spring;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Client {

    public static void main(String[] args) {
        BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
       
        UserManager userManager = (UserManager)factory.getBean("userManager");
       
        userManager.addUser("张三", "123");
        userManager.deleteUser(1);
    }
}

 

    执行测试,抛出下列异常:

   Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userManager' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut pointCutMethod
Caused by: java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut pointCutMethod
    at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:315)
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:172)
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.checkReadyToMatch(AspectJExpressionPointcut.java:162)
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.getClassFilter(AspectJExpressionPointcut.java:103)
    at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:171)
    at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:231)
    at org.springframework.aop.support.AopUtils.findAdvisorsThatCanApply(AopUtils.java:256)
    at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:68)
    at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:54)
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:247)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:311)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1038)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:420)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:290)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:348)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:92)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:77)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:68)
    at com.bjsxt.spring.Client.main(Client.java:9)

 

      将JDK1.6切换到jdk1.5,就没问题了。那么在JDK1.6中,如何解决这个问题呢?哪位知道,不吝赐教,不胜感激。

 

分享到:
评论

相关推荐

    Spring 2.0 中文用户指南

    Spring AOP支持两种实现方式:基于代理的AOP(包括JDK动态代理和CGLIB代理)和基于 AspectJ 的编译时及加载时织入。开发者可以根据实际需求选择合适的方式。 八、测试支持 Spring框架提供了一套完整的测试工具集,...

    spring aspectj.jar

    这个库使得AspectJ可以在没有JDK修改的情况下运行,是Spring AOP与AspectJ集成的基础。 在Spring中使用AspectJ,我们通常有两种方式:一种是使用AspectJ的编译时或加载时织入,这需要配置AspectJ的编译器或加载器;...

    Spring 2.0 开发参考手册

    目录 前言 1. 简介 1.1. 概览 1.2. 使用场景 2. Spring 2.0 的新特性 ... 使用JDK 5.0注解 20.3.4. 源代码级的元数据类型 20.3.5. 接口AutodetectCapableMBeanInfoAssembler 20.3.6. 用Java接口定义管理接口 ...

    SpringAOP+AspectJ

    **Spring AOP与AspectJ详解** 在现代软件开发中,面向切面编程(Aspect-Oriented Programming,简称AOP)是一种强大的设计模式,它允许我们分离关注点,将横切关注点(如日志、事务管理、权限控制等)与核心业务...

    spring3零配置注解实现Bean定义

    8. JSR-250和JSR-330的注解虽然被Spring支持,但它们并不是JDK的一部分,通常需要在特定的应用服务器环境中使用。例如,@ManagedBean注解需要在像Jboss这样的Java EE服务器中使用。 9. @Named注解,以及其在Java EE...

    jar包---Spring Aop AspectJ新增包.rar

    在Spring框架中集成AspectJ,可以实现更细粒度的控制和更灵活的切面定义。 在Java开发中,`jar`包是Java Archive的缩写,是Java平台的标准打包格式,包含了类文件和其他资源。在"jar包---Spring Aop AspectJ新增包....

    spring-framework-2.0-m1-with-dependencies.rar

    2. **ORM框架**:如Hibernate、iBatis,与Spring集成进行对象关系映射。 3. **Logging框架**:如log4j、slf4j,提供日志记录服务。 4. **XML解析库**:如DOM4J、Xerces,用于解析XML配置文件。 5. **Servlet容器库**...

    基于Spring框架的AOP与MyBatis集成项目.zip

    基于Spring框架的AOP与MyBatis集成项目 项目简介 本项目是一个基于Spring框架的应用程序,专注于使用Spring AOP(面向切面编程)和MyBatis进行数据库操作的集成。项目涵盖了从基本的Git操作到复杂的动态代理、...

    spring aop支持jdk1.7的jar

    总之,Spring AOP与AspectJ结合使用,为Java 7应用程序提供了强大的面向切面编程能力,可以在不干扰原有业务逻辑的情况下,优雅地添加功能和管理横切关注点。通过合理配置和使用aspectj-1.7.4.jar和aspectjweaver-...

    Spring的AOP实例(XML+@AspectJ双版本解析+源码+类库)

    本篇文章将深入探讨Spring的AOP(面向切面编程)特性,包括XML配置和@AspectJ注解方式的实践,同时结合源码分析,帮助开发者更全面地理解和应用这一重要概念。 **AOP概述** 面向切面编程(Aspect-Oriented ...

    spring-aop-aspectj-case

    标题“spring-aop-aspectj-case”涉及到的是Spring框架中的AOP(面向切面编程)与AspectJ的集成使用案例。在Spring框架中,AOP用于处理系统中的横切关注点,如日志、事务管理等,而AspectJ则是一个强大的、独立的...

    Spring-AOP-JDK动态代理

    在Spring中,可以通过实现`org.aspectj.lang.annotation.Aspect`接口或者使用注解`@Aspect`来定义一个切面类。 2. **定义通知(Advice)**:通知是切面在特定连接点(Join Point,如方法调用)执行的代码。Spring...

    spring对AOP的支持(使用AspectJ进行AOP演示)

    通过结合 AspectJ 的注解和 Spring 的自动代理机制,我们可以方便地实现面向切面的编程,为我们的应用程序带来诸多便利。在实际开发中,合理利用 AOP 可以有效地降低代码复杂度,提升软件质量。

    spring chm文档

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. ...

    aspectjrt-1.8.3+aspectjweaver-1.8.9

    总结来说,"aspectjrt-1.8.3.jar"和"aspectjweaver-1.8.9.jar"是实现Spring AOP的关键依赖,它们提供了AspectJ的运行时环境和动态织入功能,使得我们可以使用@AspectJ注解轻松地在Spring中实现面向切面编程,提高...

    aspectj+aspectjrt+aspectjweaver

    在JDK 1.8环境下,AspectJ Weaver可以无缝地集成到Spring框架中,为Spring应用提供AOP支持。 在实际开发中,以下是一些使用AspectJ的关键知识点: - **切面(Aspect)**:切面是关注点的模块化,包含了切点...

    spring5aop注解需要jar

    在这个场景中,"spring5aop注解需要jar"指的是你需要特定的JAR文件来支持Spring 5中的AOP注解功能。下面我们将详细探讨Spring AOP注解的相关知识点以及如何添加必要的依赖。 1. **AOP概念**: 面向切面编程是一种...

    注解org.aspectj.docx

    在Spring AOP中,如果目标对象实现了接口,则使用JDK动态代理技术;如果目标对象没有实现接口,则使用CGLIB动态代理技术。这两种技术都是为了实现代理模式,以便在不修改原始对象的情况下添加新的行为。 #### 五、...

    spring2.5+struts2.0+hibernate3.3整合

    Struts2.0版本引入了更多的插件和模板技术,增强了与Spring的集成,使得开发者可以方便地利用Spring管理Action类。 Hibernate作为对象关系映射(ORM)工具,简化了数据库操作,使得Java对象可以直接与数据库中的...

Global site tag (gtag.js) - Google Analytics