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中,如何解决这个问题呢?哪位知道,不吝赐教,不胜感激。
分享到:
- 2009-05-20 19:08
- 浏览 2260
- 评论(0)
- 论坛回复 / 浏览 (0 / 3653)
- 查看更多
相关推荐
Spring AOP支持两种实现方式:基于代理的AOP(包括JDK动态代理和CGLIB代理)和基于 AspectJ 的编译时及加载时织入。开发者可以根据实际需求选择合适的方式。 八、测试支持 Spring框架提供了一套完整的测试工具集,...
这个库使得AspectJ可以在没有JDK修改的情况下运行,是Spring AOP与AspectJ集成的基础。 在Spring中使用AspectJ,我们通常有两种方式:一种是使用AspectJ的编译时或加载时织入,这需要配置AspectJ的编译器或加载器;...
目录 前言 1. 简介 1.1. 概览 1.2. 使用场景 2. Spring 2.0 的新特性 ... 使用JDK 5.0注解 20.3.4. 源代码级的元数据类型 20.3.5. 接口AutodetectCapableMBeanInfoAssembler 20.3.6. 用Java接口定义管理接口 ...
**Spring AOP与AspectJ详解** 在现代软件开发中,面向切面编程(Aspect-Oriented Programming,简称AOP)是一种强大的设计模式,它允许我们分离关注点,将横切关注点(如日志、事务管理、权限控制等)与核心业务...
8. JSR-250和JSR-330的注解虽然被Spring支持,但它们并不是JDK的一部分,通常需要在特定的应用服务器环境中使用。例如,@ManagedBean注解需要在像Jboss这样的Java EE服务器中使用。 9. @Named注解,以及其在Java EE...
在Spring框架中集成AspectJ,可以实现更细粒度的控制和更灵活的切面定义。 在Java开发中,`jar`包是Java Archive的缩写,是Java平台的标准打包格式,包含了类文件和其他资源。在"jar包---Spring Aop AspectJ新增包....
2. **ORM框架**:如Hibernate、iBatis,与Spring集成进行对象关系映射。 3. **Logging框架**:如log4j、slf4j,提供日志记录服务。 4. **XML解析库**:如DOM4J、Xerces,用于解析XML配置文件。 5. **Servlet容器库**...
基于Spring框架的AOP与MyBatis集成项目 项目简介 本项目是一个基于Spring框架的应用程序,专注于使用Spring AOP(面向切面编程)和MyBatis进行数据库操作的集成。项目涵盖了从基本的Git操作到复杂的动态代理、...
总之,Spring AOP与AspectJ结合使用,为Java 7应用程序提供了强大的面向切面编程能力,可以在不干扰原有业务逻辑的情况下,优雅地添加功能和管理横切关注点。通过合理配置和使用aspectj-1.7.4.jar和aspectjweaver-...
本篇文章将深入探讨Spring的AOP(面向切面编程)特性,包括XML配置和@AspectJ注解方式的实践,同时结合源码分析,帮助开发者更全面地理解和应用这一重要概念。 **AOP概述** 面向切面编程(Aspect-Oriented ...
标题“spring-aop-aspectj-case”涉及到的是Spring框架中的AOP(面向切面编程)与AspectJ的集成使用案例。在Spring框架中,AOP用于处理系统中的横切关注点,如日志、事务管理等,而AspectJ则是一个强大的、独立的...
在Spring中,可以通过实现`org.aspectj.lang.annotation.Aspect`接口或者使用注解`@Aspect`来定义一个切面类。 2. **定义通知(Advice)**:通知是切面在特定连接点(Join Point,如方法调用)执行的代码。Spring...
通过结合 AspectJ 的注解和 Spring 的自动代理机制,我们可以方便地实现面向切面的编程,为我们的应用程序带来诸多便利。在实际开发中,合理利用 AOP 可以有效地降低代码复杂度,提升软件质量。
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.jar"和"aspectjweaver-1.8.9.jar"是实现Spring AOP的关键依赖,它们提供了AspectJ的运行时环境和动态织入功能,使得我们可以使用@AspectJ注解轻松地在Spring中实现面向切面编程,提高...
在JDK 1.8环境下,AspectJ Weaver可以无缝地集成到Spring框架中,为Spring应用提供AOP支持。 在实际开发中,以下是一些使用AspectJ的关键知识点: - **切面(Aspect)**:切面是关注点的模块化,包含了切点...
在这个场景中,"spring5aop注解需要jar"指的是你需要特定的JAR文件来支持Spring 5中的AOP注解功能。下面我们将详细探讨Spring AOP注解的相关知识点以及如何添加必要的依赖。 1. **AOP概念**: 面向切面编程是一种...
在Spring AOP中,如果目标对象实现了接口,则使用JDK动态代理技术;如果目标对象没有实现接口,则使用CGLIB动态代理技术。这两种技术都是为了实现代理模式,以便在不修改原始对象的情况下添加新的行为。 #### 五、...
Struts2.0版本引入了更多的插件和模板技术,增强了与Spring的集成,使得开发者可以方便地利用Spring管理Action类。 Hibernate作为对象关系映射(ORM)工具,简化了数据库操作,使得Java对象可以直接与数据库中的...