Spring-----
注解方法使用
AOP
先建立项目
,
在
spring
的
xml
文件中加入
spring AOP
的支持
.
主要是下面红色字部分
.
<?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></aop:aspectj-autoproxy>
<bean id="myInterceptor" class="com.liyu.service.MyInterceptor"></bean>
<bean id="personServiceBean" class="com.liyu.service.impl.PersonServiceBean"></bean>
</beans>
再定一个一接口
,
一个这个接口的实现
.
再就是写这个
AOP
类了
.
package com.liyu.service;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
/**
* 切面
*
*/
@Aspect
public class MyInterceptor {
@Pointcut("execution (* com.liyu.service.impl.PersonServiceBean.*(..))")
private void anyMethod() {}//声明一个切入点
@Before("anyMethod() && args(name)")
public void doAccsCheck(String name) {
System.out.println("前置通知:"+name);
}
@AfterReturning(pointcut="anyMethod()",returning="result")
public void doAfterReturning(String result) {
System.out.println("后置通知:"+result);
}
@After("anyMethod()")
public void doAfter() {
System.out.println("最终通知:");
}
@AfterThrowing(pointcut="anyMethod()",throwing="e")
public void doAfterThrowing(Exception e) {
System.out.println("例外通知:"+e);
}
@Around(("anyMethod()"))
//环绕通知
public Object doBasicProfiling(ProceedingJoinPoint pjp)throws Throwable{
System.out.println("进入方法");
Object result=pjp.proceed();
System.out.println("退出方法");
return result;
}
}
测试类:
package com.liyu.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.liyu.service.PersonService;
public class AOPtest {
public static void main(String[] args) {
ApplicationContext ctx= new ClassPathXmlApplicationContext("beans.xml");
//MyInterceptor mi=(MyInterceptor)ctx.getBean("myInterceptor");
PersonService ps=(PersonService)ctx.getBean("personServiceBean");
ps.save("sss");
}
}
运行结果
:
2010-6-15 8:27:27 org.springframework.context.support.AbstractApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@147ee05: display name [org.springframework.context.support.ClassPathXmlApplicationContext@147ee05]; startup date [Tue Jun 15 08:27:27 CST 2010]; root of context hierarchy
2010-6-15 8:27:27 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [beans.xml]
2010-6-15 8:27:28 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
信息: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@147ee05]: org.springframework.beans.factory.support.DefaultListableBeanFactory@273686
2010-6-15 8:27:28 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@273686: defining beans [org.springframework.aop.config.internalAutoProxyCreator,myInterceptor,personServiceBean]; root of factory hierarchy
前置通知:sss
进入方法
我是save()方法.
后置通知:null
最终通知:
退出方法
我在这里做练习时出错了
PersonService ps=(PersonService)ctx.getBean("personServiceBean");
这里一定要使用的是那个接口
.
原文地址:http://www.c119.cn/home.php?mod=space&uid=174&do=blog&id=348
分享到:
相关推荐
"spring-aop-jar"这个主题涉及到Spring框架中的核心组件之一——Spring AOP。这里我们将深入探讨Spring AOP、相关jar文件以及它们在实际开发中的作用。 首先,我们来看一下提供的文件: 1. aopalliance.jar:这是一...
Spring AOP提供了注解和XML两种方式来实现切面编程。注解方式更加简洁,易于理解和维护,适用于大多数情况。而XML配置方式则在复杂场景下更具灵活性,如需要动态调整切面配置时。在实际项目中,可以根据需求选择适合...
基于注解实现SpringAop基于注解实现SpringAop基于注解实现SpringAop
commons-logging-1.1.3,spring-test-4.0.0.RELEASE,spring-aop-4.0.0.RELEASE,spring-aspects-4.0.0.RELEASE
spring-aop-4.2.4.RELEASE,spring注解包,代码里面特殊标记,使用注解可以完成功能,相当于语法糖操作
在4.0.0.RELEASE版本中,Spring AOP进一步优化了其性能和易用性,特别是对于基于注解的配置,使得bean装配更加简洁高效。本文将深入探讨Spring AOP的核心概念、主要功能以及实际应用。 1. **AOP核心概念** - **切...
spring-aop-4.0.4.RELEASE.jar com.springsource.net.sf.cglib-2.2.0.jar com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar spring-aspects-4.1.2.RELEASE.jar ...
本资料包"spring-aop-4.2.6.RELEASE.zip"正是针对Spring AOP的一个重要版本,它与"spring-framework.zip"一同构成了强大的弹簧框架体系。开源项目的精神在此得以充分体现,为开发者提供了丰富的功能和高度的灵活性。...
以上就是Spring注解方式实现AOP的一些核心细节。通过这种方式,我们可以方便地在不修改原有代码的情况下,为服务添加额外的功能,实现代码的解耦和复用。不过,需要注意的是,过度使用AOP可能会导致代码可读性和可...
我们将详细探讨在"springaop-demo01"中实现的注解AOP以及"SSM-MybatisOneForOne-demo01"中的MyBatis一对一映射。 首先,让我们深入了解一下注解AOP在"springaop-demo01"中的应用。AOP(面向切面编程)是Spring框架...
Spring AOP提供了多种通知实现,如`org.springframework.aop.interceptor.AbstractAsyncTimingInterceptor`用于异步方法的性能监控。 4. **切点(Pointcut)**:切点定义了通知的触发条件,可以基于方法名、注解、...
本示例是关于如何在Spring Boot项目中实现AOP功能的一个简单演示。 首先,我们需要了解AOP的基本概念。AOP的核心是切面(Aspect),它封装了跨越多个对象的行为或关注点,如日志记录。切点(Pointcut)定义了在何处...
- **注解AOP**:在`springaop-demo01`中,使用了注解来声明切面。比如`@Aspect`定义一个切面类,`@Before`、`@After`、`@Around`、`@Pointcut`等注解用于定义通知(Advice)和切入点(Pointcut)。 - **配置AOP**...
Spring AOP实现详解 在Java开发中,Spring框架以其强大的功能和灵活性被广泛使用,而AOP(面向切面编程)则是Spring框架的一个重要特性。AOP为开发者提供了一种处理横切关注点的新方法,使得代码更加模块化,提高了...
在这个名为"springAOP-dome"的实例中,我们将探讨如何利用Spring AOP实现一个简单的日志记录功能,以作为入门学习。 首先,了解AOP的基本概念是必要的。面向切面编程是一种编程范式,旨在解决程序中的横切关注点,...
在给定的压缩包中,包含了`spring-beans-3.0.xsd`、`spring-context-3.0.xsd`、`spring-aop-3.0.xsd`和`spring-tx-3.0.xsd`这四个重要的XSD文件,它们分别对应Spring框架的不同核心模块。 1. **spring-beans-3.0....
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来实现横切关注点,如日志、事务管理、性能监控等。这些关注点通常与业务逻辑无关,但又在多个地方被用到,AOP就是为了...
Spring Aop-4.0.0.RELEASE版本是Spring 4.0系列的一个发行版,包含了对AOP特性的支持和改进。在这个版本中,你可以期待以下功能: 1. 改进的性能:Spring 4.0引入了一些优化,使得代理对象的创建更快,整体性能有所...
spring-aop注解用到的jar包,解压后直接导入即可使用。