`

spring学习----spring注解实现AOP

 
阅读更多

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-aop-jar"这个主题涉及到Spring框架中的核心组件之一——Spring AOP。这里我们将深入探讨Spring AOP、相关jar文件以及它们在实际开发中的作用。 首先,我们来看一下提供的文件: 1. aopalliance.jar:这是一...

    spring aop注解方式、xml方式示例

    Spring AOP提供了注解和XML两种方式来实现切面编程。注解方式更加简洁,易于理解和维护,适用于大多数情况。而XML配置方式则在复杂场景下更具灵活性,如需要动态调整切面配置时。在实际项目中,可以根据需求选择适合...

    基于注解实现SpringAop

    基于注解实现SpringAop基于注解实现SpringAop基于注解实现SpringAop

    commons-logging-1.1.3,spring-test-4.0.0.RELEASE,spring-aop-4.0.0.RELEASE

    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-aop-4.2.4.RELEASE,spring注解包,代码里面特殊标记,使用注解可以完成功能,相当于语法糖操作

    spring-aop-4.0.0.RELEASE

    在4.0.0.RELEASE版本中,Spring AOP进一步优化了其性能和易用性,特别是对于基于注解的配置,使得bean装配更加简洁高效。本文将深入探讨Spring AOP的核心概念、主要功能以及实际应用。 1. **AOP核心概念** - **切...

    spring-aop-annotation-log-all

    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-4.2.6.RELEASE.zip"正是针对Spring AOP的一个重要版本,它与"spring-framework.zip"一同构成了强大的弹簧框架体系。开源项目的精神在此得以充分体现,为开发者提供了丰富的功能和高度的灵活性。...

    使用Spring的注解方式实现AOP的细节

    以上就是Spring注解方式实现AOP的一些核心细节。通过这种方式,我们可以方便地在不修改原有代码的情况下,为服务添加额外的功能,实现代码的解耦和复用。不过,需要注意的是,过度使用AOP可能会导致代码可读性和可...

    草稿:SSM整合-用springaop-demo01实现了注解AOP,SSM-MybatisOneForOne-demo01实现

    我们将详细探讨在"springaop-demo01"中实现的注解AOP以及"SSM-MybatisOneForOne-demo01"中的MyBatis一对一映射。 首先,让我们深入了解一下注解AOP在"springaop-demo01"中的应用。AOP(面向切面编程)是Spring框架...

    spring-aop.jar

    Spring AOP提供了多种通知实现,如`org.springframework.aop.interceptor.AbstractAsyncTimingInterceptor`用于异步方法的性能监控。 4. **切点(Pointcut)**:切点定义了通知的触发条件,可以基于方法名、注解、...

    spring-boot aop

    本示例是关于如何在Spring Boot项目中实现AOP功能的一个简单演示。 首先,我们需要了解AOP的基本概念。AOP的核心是切面(Aspect),它封装了跨越多个对象的行为或关注点,如日志记录。切点(Pointcut)定义了在何处...

    SSM整合-用springaop-demo01实现了注解AOP,SSM-MybatisOneForOne-demo01实现了

    - **注解AOP**:在`springaop-demo01`中,使用了注解来声明切面。比如`@Aspect`定义一个切面类,`@Before`、`@After`、`@Around`、`@Pointcut`等注解用于定义通知(Advice)和切入点(Pointcut)。 - **配置AOP**...

    spring----AOP实现

    Spring AOP实现详解 在Java开发中,Spring框架以其强大的功能和灵活性被广泛使用,而AOP(面向切面编程)则是Spring框架的一个重要特性。AOP为开发者提供了一种处理横切关注点的新方法,使得代码更加模块化,提高了...

    springAOP-dome

    在这个名为"springAOP-dome"的实例中,我们将探讨如何利用Spring AOP实现一个简单的日志记录功能,以作为入门学习。 首先,了解AOP的基本概念是必要的。面向切面编程是一种编程范式,旨在解决程序中的横切关注点,...

    关于Spring的spring-beans-xsd和tx-xsd aop-xsd等

    在给定的压缩包中,包含了`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就是为了...

    Spring-Aop所有jar

    Spring Aop-4.0.0.RELEASE版本是Spring 4.0系列的一个发行版,包含了对AOP特性的支持和改进。在这个版本中,你可以期待以下功能: 1. 改进的性能:Spring 4.0引入了一些优化,使得代理对象的创建更快,整体性能有所...

    spring-aop注解jar包

    spring-aop注解用到的jar包,解压后直接导入即可使用。

Global site tag (gtag.js) - Google Analytics