`

springframework【11】

阅读更多

AOP之aop标签的支持

 

spring2.0提供了基于XML Schema的设置和基于Annotation的支持,这两种方式对于AOP在使用上的简化都大有帮助,这里我们只是介绍基于xml的设置。
1、定义一个Advice类,这个advice类不同于以往的,需要集成一些什么advice类。直接就是一个单独的advice类文件。
 例如:

package com.itcast.aop.xml;
//测试aop标签
import org.aspectj.lang.JoinPoint;;
public class TestAdvice {
	public void fff(JoinPoint jointPoint){
		System.out.println("测试aop标签:"+jointPoint.getSignature().getName());
	}
}

 其中这个JoinPoint可以省略掉
2)、在配置文件上引入新的xmlns
<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"
 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">
3、配置使用,配置文件中声明advice bean。同时使用aop标签来设定适用范围

 

<!-- 基于aop标签方式的配置 -->
<bean id="testTag" class="com.itcast.aop.xml.TestAdvice"></bean>
<aop:config>
  <aop:aspect id="logging" ref="testTag">
   <aop:before pointcut="execution(* com.itcast.aop.IHello.*(..))"
   method="fff"/>
  </aop:aspect>
</aop:config>
<bean id="helloSpeaker" class="com.itcast.aop.HelloSpeaker"></bean>

 

 

如上的pointcut中方法名称:
com.itcast.aop.IHello.*(..)表示Ihello方法所声明的任何方法都符合,参数类型设置“(..)”表示任何参数类型声明都符合
 Method方法:指明了Advice上要调用的方法名称,这里是TestAdvice中的fff方法
 Aop:before表示Advice将作为BeforeAdvice

 

4、测试类

package com.itcast.aop.xml;

//测试spring的aop配置
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.itcast.aop.IHello;
public class SpringAOPMain {
	public static void main(String[] args) throws Exception {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("bean-config.xml");
        IHello helloSpeaker = (IHello)ctx.getBean("helloSpeaker");
        helloSpeaker.hello("aaaaaaaaaaaaaaa");
        helloSpeaker.helloAaa("bbbbbbbbbbbbbbb");
        helloSpeaker.helloBbb("ccccccccccccccc");
	}
}

 

5、输出结果

测试aop标签:hello
Hello aaaaaaaaaaaaaaa
测试aop标签:helloAaa
Hello in aaa bbbbbbbbbbbbbbb
测试aop标签:helloBbb
Hello in bbb ccccccccccccccc

 

透过控制台输出的结果可以看到,任何实现了IHello接口类中的方法调用都调用,都被我们声明的advice给拦截了。

相关的hello接口以及实现类,以及声明,参照如下:

 

package com.itcast.aop;
//要实现的接口
public interface IHello {
	public void hello(String name) throws Exception;
	public void helloAaa(String name);
	public void helloBbb(String name);
}

package com.itcast.aop;
import java.util.logging.*;
//实现方法1
public class HelloSpeaker implements IHello{
//	private Logger logger = Logger.getLogger(this.getClass().getName());
	public void hello(String name) throws Exception{
//		logger.info("hello method start");
		System.out.println("Hello "+ name);
//		throw new Exception("自定义的异常");
//		logger.info("hello method end");
	}
	public void helloAaa(String name) {
		System.out.println("Hello in aaa "+ name);
	}
	public void helloBbb(String name) {
		System.out.println("Hello in bbb "+ name);
	}
}

 

总结:spring的aop标签支持需要在xmlschemal上声明命名空间。并需要编写一个特定格式的advice类,最终使用aop标签完成advice对类的拦截。当我们调用bean的时候,如果符合了aop标签声明的监控范围,他将拦截我们的类。

note:不知道aop标签的写法,看一下spring的reference

 

 

 

分享到:
评论

相关推荐

    Spring Framework API(Spring Framework 开发文档).CHM

    Spring Framework。 官网 Spring Framework API。 Spring Framework 开发文档。

    maven仓库中org下的springframework

    标题中的“maven仓库中org下的springframework”指的是在Maven的本地或远程仓库中,位于`org`组织下的`springframework`项目。Spring Framework是Java开发中的一个核心框架,由Pivotal Software公司维护,它为构建...

    Spring Framework 4 参考文档中文版.docx

    "Spring Framework 4 参考文档中文版" 以下是 Spring Framework 4 参考文档中文版的知识点总结: 一、Spring Framework 概览 * Spring Framework 是一个轻量级的解决方案,是一站式构建企业级应用的一种选择。 * ...

    org.springframework.core.jar

    《Spring框架核心模块——org.springframework.core.jar深度解析》 在Java世界中,Spring框架以其卓越的灵活性、可扩展性和模块化设计,成为了企业级应用开发的首选。其中,`org.springframework.core.jar`是Spring...

    spring framework 中文参考手册

    spring framework 中文参考手册

    Spring Framework v6.1.4.zip

    Spring Framework 是一个广泛使用的开源Java应用框架,特别适用于企业级应用程序开发。它的最新版本v6.1.4为我们带来了许多新特性和改进,使得开发者能够更高效、更灵活地构建可维护的、高性能的应用程序。这个...

    org.springframework.flex-1.0.3.RELEASE.jar.zip

    org.springframework.flex-1.0.3.RELEASE.jar.zip用于JAR包,org.springframework.flex-1.0.3.RELEASE.jar.zip用于JAR包org.springframework.flex-1.0.3.RELEASE.jar.zip用于JAR包org.springframework.flex-1.0.3....

    Spring Framework API文档

    Spring Framework API文档。Spring是什么呢?首先它是一个开源的项目,而且非常活跃;它是一个基于IOC和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据...

    org.spring-framework-3.0.4. 所有jar

    org.springframework.aop-3.0.4.RELEASE.jar org.springframework.asm-3.0.4.RELEASE.jar org.springframework.aspects-3.0.4.RELEASE.jar org.springframework.beans-3.0.4.RELEASE.jar org.springframework....

    spring framework 简介

    ### Spring Framework 简介 #### 一、Spring Framework 的独特之处 在众多J2EE框架中,Spring Framework 自2003年发布以来一直备受瞩目。与其他框架相比,Spring Framework 的独特之处在于: 1. **专注于管理业务...

    Spring Framework v5.3.32.zip

    11. **测试支持**:Spring 提供了丰富的测试工具和API,如Spring Test、Spring Boot Test等,便于编写单元测试和集成测试。 在下载并解压"spring-framework-5.3.32"后,开发者通常会查看源码,了解其内部工作原理,...

    Spring Framework 6 中文文档

    Spring Framework 是Java开发中的核心框架,它以其强大的功能和易用性成为了许多开发者首选的工具。Spring Framework 6.0.8-SNAPSHOT 的中文文档是针对这一最新版本的详尽指南,旨在解决中文互联网上关于Spring框架...

    Getting started with Spring Framework: covers Spring 5(epub)

    Getting started with Spring Framework (4th Edition) is a hands-on guide to begin developing applications using Spring Framework 5. The examples (consisting of 88 sample projects) that accompany this ...

    spring-framework-2.0.2

    org\springframework\aop org\springframework\beans org\springframework\cache org\springframework\context org\springframework\core org\springframework\dao org\springframework\ejb org\spring...

    Spring Framework 5.1.0源码

    Spring Framework 5.1.0源码 The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform. A key ...

    org.springframework.core_3.1.1.RELEASE.jar

    《Spring核心模块详解:org.springframework.core_3.1.1.RELEASE.jar》 在Java开发领域,Spring框架无疑是最重要的框架之一,它以其强大的依赖注入、面向切面编程以及丰富的功能扩展,深受开发者喜爱。其中,`org....

    SpringFramework_v5.0.7.zip

    Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本。 该框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-...

    spring3.0.5 所有jar文件

    org.springframework.aop-3.0.5.RELEASE.jar org.springframework.asm-3.0.5.RELEASE.jar org.springframework.aspects-3.0.5.RELEASE.jar org.springframework.beans-3.0.5.RELEASE.jar org.springframework....

    Spring Framework v5.0.11

    Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本。 该框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-...

    Spring Framework 4.x Reference Documentation 中文翻译

    Spring Framework 4.x Reference Documentation 中文翻译 Chinese translation of the Spring Framework 4.x Reference Documentation ...

Global site tag (gtag.js) - Google Analytics