-
AOP 通过XML方式实现 请问如何解决?15
问题是:只要我写上下列代码就会报错
<aop:before pointcut-ref="mycut" method="doAccessCheck"/>
<aop:after-returning pointcut-ref="mycut" method="doAfterReturning"/>
<aop:after-throwing pointcut-ref="mycut" method="AfterThrowing"/>
<aop:after pointcut-ref="mycut" method="doAfter"/>
<aop:around pointcut-ref="mycut" method="doBasicProfiling"/>
下面是源文件,请大家帮我看看哪出错了,谢谢!
beans.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: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">
<!-- 启动对@AspectJ注解的支持 -->
<aop:aspectj-autoproxy/>
<bean id="test" class="cn.yingtong.service.impl.PersonServiceBeanTest"/>
<bean id="aspetbean" class="cn.yingtong.service.ServiceInterceptor"/>
<aop:config>
<aop:aspect id="asp" ref="aspetbean">
<aop:pointcut id="mycut" expression="execution(* cn.yingtong.service.impl.PersonServiceBeanTest.*(..))"/>
<aop:before pointcut-ref="mycut" method="doAccessCheck"/>
<aop:after-returning pointcut-ref="mycut" method="doAfterReturning"/>
<aop:after-throwing pointcut-ref="mycut" method="AfterThrowing"/>
<aop:after pointcut-ref="mycut" method="doAfter"/>
<aop:around pointcut-ref="mycut" method="doBasicProfiling"/>
</aop:aspect>
</aop:config>
</beans>
PersonServiceBeanTest
public class PersonServiceBeanTest implements IService {
public void save(String name) {
System.out.println("我是save()方法");
// throw new RuntimeException("save()异常");
}
public String getPersonName(Integer personid) {
System.out.println("我是getPersonName()方法");
return "getPersonName";
}
}
ServiceInterceptor
public class ServiceInterceptor {
public void doAccessCheck(String name) {
System.out.println("前置通知:" + name);
}
public void doAfterReturning(String result) {
System.out.println("后置通知:" + result);
}
public void doAfter() {
System.out.println("最终通知");
}
public void AfterThrowing(Exception e) {
System.out.println("异常通知:" + e);
}
// 环绕通知
public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable {
System.out.println("进入方法");
Object result = pjp.proceed();
System.out.println("退出方法");
return result;
}
}
测试类
public static void main(String[] args) {
ApplicationContext cxt = new ClassPathXmlApplicationContext("beans.xml");
PersonServiceBeanTest personService = (PersonServiceBeanTest)cxt.getBean("test");
personService.getPersonName(1);
}
2012年7月13日 01:12
目前还没有答案
相关推荐
在Spring框架中,AOP的实现有两种主要方式:一种是基于XML配置,另一种是基于注解。本篇将主要讨论如何通过注解方式来实现AOP编程。 首先,我们需要了解Spring中的核心注解。`@Aspect`是定义一个切面的注解,通常会...
Spring AOP通过XML配置文件提供了灵活的方式来定义和管理切面、切入点和通知,使得我们可以轻松地在应用程序中实现横切关注点的解耦。了解和掌握Spring AOP的配置实现,有助于提升我们构建松散耦合、易于维护的系统...
XML配置是Spring早期版本中实现AOP的主要方式,虽然在现代版本中已经被注解式AOP所取代,但理解XML配置对于学习Spring的历史和原理仍然是必要的。 首先,我们需要创建一个Spring配置文件,通常命名为`...
- **声明式AOP**:AspectJ通过注解或XML配置文件来声明哪些方法需要添加什么样的横切关注点,简化了AOP的实现过程。 - **程序式AOP**:对于更复杂的场景,AspectJ还提供了编程接口,允许开发者直接编写Java代码来...
总结一下,Spring基于AOP实现的事务管理通过TransactionProxyFactoryBean,结合声明式事务配置,能够提供一种高效且易于维护的事务解决方案。它允许我们在不修改业务逻辑的情况下,统一管理和控制事务,提升了代码的...
总结起来,通过SpringBoot的AOP和MyBatis的多数据源配置,我们可以实现灵活的数据库分库分表查询。这种方式不仅可以降低系统复杂度,提高性能,还使得代码更加模块化,便于维护。在处理大数据量和高并发场景时,这样...
通过以上讨论,我们不仅理解了Spring AOP的基本概念,还掌握了XML和@AspectJ两种实现方式的细节。结合提供的源码,可以进一步深入到Spring AOP的内部运作,提升我们的编程技能和问题解决能力。在实际工作中,选择...
Spring AOP是Java环境中最广泛使用的AOP实现,它支持基于注解和XML配置的切面定义。通过`@Aspect`注解,我们可以创建切面类,使用`@Before`, `@After`, `@Around`等注解定义通知,并使用`@Pointcut`定义切入点。 ...
在这种情况下,可以考虑使用更强大的AOP框架,如Spring AOP,它提供了基于注解和XML配置的更全面的AOP解决方案。 总结来说,JDK的动态代理提供了一种轻量级的AOP实现方式,尤其适用于接口驱动的设计。通过理解其...
下面我们将通过三个示例代码,展示 Spring AOP 的三种实现方式。 纯 XML 方式 在纯 XML 方式中,我们需要在 Spring 配置文件中配置 AOP 相关的信息,例如,需要引入的 jar 包、Aspect 的定义、Pointcut 的定义等。...
对于案例中的问题——重复的事务控制代码,可以使用AOP技术通过动态代理的方式解决: - **思路**:创建代理对象,在执行业务逻辑时增加事务支持。 - **实现步骤**:选择合适的代理机制,比如JDK动态代理或CGLib。 #...
在Spring框架中,AOP可以通过基于XML的配置或者基于注解的方式实现。但在实际开发过程中,可能会遇到配置好的AOP切面不生效的问题,本文将针对这一现象进行深入分析,并提供相应的解决方案。 #### 一、问题定位 当...
在实际应用中,我们可以通过配置XML或使用注解的方式来定义切面。例如,我们可以定义一个切面类,其中包含一个切入点表达式和通知方法,然后在Spring容器中注册这个切面,Spring就会在匹配的Join Point上插入我们的...
总之,Spring.NET 的 AOP 功能通过配置文件提供了一种灵活的方式来管理和组织横切关注点,提高了代码的可读性和可维护性。理解和熟练使用这一特性,对于提升 .NET 应用程序的质量和可扩展性至关重要。
为了解决这一问题,可以利用Spring框架中的AOP(Aspect Oriented Programming,面向切面编程)技术来实现。 #### 二、Spring AOP 概述 Spring AOP 是Spring框架提供的一种实现AOP的方法。通过AOP,开发者可以在不...
AOP通过定义切面(Aspect)和通知(Advice)来实现这一目标,切面定义了关注点的结构,而通知则定义了在何处以及如何应用这些关注点。 ehCache是一个开源的Java分布式缓存系统,它可以极大地提高应用程序的性能,...
实验主题涉及Spring AOP(面向切面编程)的两种实现方式——基于XML配置和基于注解的编程,用于模拟银行账户的存钱和取钱操作。AOP的主要目的是分离关注点,将业务逻辑与横切关注点(如日志、事务管理等)解耦。 一...
### Spring AOP 概念与实践 #### 一、AOP 概述 ...Spring AOP 提供了灵活的机制来实现这一目标,无论是通过 AspectJ 注解还是 XML 配置,开发者都可以根据项目的需求选择最适合的方式来实现 AOP。
在Spring中实现AOP主要有两种方式: 1. **基于注解的AOP**:通过在目标类的方法上使用特定的注解(如`@Before`, `@After`, `@Around`等)来声明通知。例如,我们可以使用`@Transactional`注解来声明一个方法需要进行...