`

使用maven+spring3 aop部署aspect的简单应用

 
阅读更多

转自:http://blog.163.com/mr_zyf/blog/static/60242161201110189522740/

 

1.在pom.xml文件<dependencies>中,增加spring3 aop,所需要的dependency。

 

xml代码:  

 

<dependency>

           <groupId>junit</groupId>

           <artifactId>junit</artifactId>

           <version>4.8.2</version>

           <scope>test</scope>

    </dependency>

 <dependency>     

        <groupId>org.springframework</groupId>

        <artifactId>spring-core</artifactId>

        <version>3.0.5.RELEASE</version> 

 </dependency>

 <dependency>     

            <groupId>org.springframework</groupId>

            <artifactId>spring-context</artifactId>

            <version>3.0.5.RELEASE</version>

 </dependency>

 <dependency>     

            <groupId>org.springframework</groupId>

            <artifactId>spring-beans</artifactId>

            <version>3.0.5.RELEASE</version>

 </dependency>

 <dependency>     

       <groupId>org.springframework</groupId>

       <artifactId>spring-test</artifactId>

       <version>3.0.5.RELEASE</version>

 </dependency>

 <dependency>

    <groupId>org.aspectj</groupId>

    <artifactId>aspectjrt</artifactId>

    <version>1.6.11</version>

 </dependency>

 <dependency>

    <groupId>org.aspectj</groupId>

    <artifactId>aspectjweaver</artifactId>

    <version>1.6.11</version>

 </dependency>

   

   <dependency>

      <groupId>cglib</groupId>

       <artifactId>cglib</artifactId>

       <version>2.1</version>

   </dependency>

 

 2. 在项目的src目录,分别生成main/java/zyf/samples/MyService.java,main/java/zyf/samples/aop/MyAdvice.java和test/java/zyf/samples/MyTest.java文件。

 

  MyService.java代码:

 

package zyf.samples;

 

/**

 * author: mr_zyf@163.com  

 * blog: http://blog.163.com/mr_zyf

 **/

 

public class MyService 

{

    

 public void show()

 {

        System.out.println( getClass().toString()+" show Hello World!" );

 }

 

 

 

MyAdvice.java代码:

 

package zyf.samples.aop;

import org.aspectj.lang.ProceedingJoinPoint;

//定义通知

/**

 * author: mr_zyf@163.com  

 * blog: http://blog.163.com/mr_zyf

 **/

 

public class MyAdvice{  

 

 //before通知方法

 public void beforeShow(){

        System.out.println( getClass().toString()+" before show" );

 }

 //after通知方法

 public void afterShow(){

        System.out.println( getClass().toString()+" after show" );

 }

 //afterReturn通知方法 

 public void afterReturnShow(){

        System.out.println( getClass().toString()+" afterReturn show" );

 }

 //afterThrowing通知方法

 public void afterThrowingShow(){

        System.out.println( getClass().toString()+" afterThrowing show" );

 }

 //around通知方法

 public void aroundShow(ProceedingJoinPoint jpoint){  

 

  try{ 

         System.out.println( getClass().toString()+" around before show" );

         //执行目标对象的连接点处的方法

         jpoint.proceed();

         System.out.println( getClass().toString()+" around after show" );

      }catch(Throwable e){

          System.out.println( getClass().toString()+" around afterThrowing show" );

     }

  }

}

 

MyTest.java代码:

 

package zyf.samples;

import org.junit.runner.RunWith;

import org.junit.Test;

import static org.junit.Assert.*;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

 

/**

 * author: mr_zyf@163.com  

 * blog: http://blog.163.com/mr_zyf

 **/

 

@RunWith(SpringJUnit4ClassRunner.class)

//自动载入classpath:/zyf/samples/MyTest-context.xml

@ContextConfiguration

public class MyTest {

    //通过myService Bean,载入对象

  @Autowired

  private MyService myService;

   

  @Test

  public void testService() { 

        myService.show();

        assertTrue( true );

   }

 

}

 

3.在项目的src目录,生成test/resources/zyf/samples/MyTest-context.xml,部署aspect。

 

xml代码:

 

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:aop="http://www.springframework.org/schema/aop"

    xmlns:context="http://www.springframework.org/schema/context"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans

           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

     http://www.springframework.org/schema/aop 

     http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 

     http://www.springframework.org/schema/context 

     http://www.springframework.org/schema/context/spring-context-3.0.xsd">

   <aop:config>

 

    

 

    <!--author: mr_zyf@163.com   blog: http://blog.163.com/mr_zyf-->

     <!-- 定义切面 引用通知的bean-->

     <aop:aspect id="my-aspect1" ref="myAdvice">

       <!-- 设置切入点 -->  

       <aop:pointcut id="pointcut1" expression="execution(* zyf.samples.MyService.*(..))"/>

       <!--指定before通知方法为,myAdvice.beforeShow(),引用切入点pointcut1-->

       <aop:before method="beforeShow" pointcut-ref="pointcut1"/>

       

 

       <!--指定after通知方法为,myAdvice.afterShow(),引用切入点pointcut1-->

 

       <aop:after method="afterShow" pointcut-ref="pointcut1"/>

       <!--指定afterReturn通知方法为,myAdvice.afterReturnShow(),引用切入点pointcut1-->

       <aop:after-returning method="afterReturnShow" pointcut-ref="pointcut1"/>

       <!--指定afterThrowing通知方法为,myAdvice.afterThrowingShow(),引用切入点pointcut1-->

       <aop:after-throwing method="afterThrowingShow" pointcut-ref="pointcut1"/>

       <!--指定around通知方法为,myAdvice.aroundShow(),引用切入点pointcut1-->

       <aop:around method="aroundShow" pointcut-ref="pointcut1"/>

    </aop:aspect>

  </aop:config>

 

  <!-- 生成切面通知的bean -->

  <bean id="myAdvice" class="zyf.samples.aop.MyAdvice"/>

  <!-- 生成zyf.samples.MyService的bean -->

  <bean id="myService" class="zyf.samples.MyService"></bean> 

</beans>

 

4. 运行:mvn test。

分享到:
评论

相关推荐

    maven+spring简单实例

    Spring通过依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP)简化了Java应用的开发。在Maven项目中,我们可以通过在POM.xml中添加Spring的相关依赖,如`spring-context`,`...

    maven +spring3 +springmvc3 +hibernate4

    【标题】"maven +spring3 +springmvc3 +hibernate4" 是一个基于Maven构建的Web项目,它整合了Spring框架的三个主要组件:Spring Core、Spring MVC和Hibernate 4。这个项目旨在为初学者提供一个基础的参考模板,其中...

    maven+struts2+spring+mybatis+springMVC

    3. Spring:Spring 是一个全面的Java企业级应用开发框架,其核心特性包括依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)。Spring 提供了对事务管理、数据访问/集成(包括...

    Maven+Spring+SpringMVC+Mybatis整合的空框架

    在本框架中,"shiro-spring Maven Webapp"可能是指使用Maven构建的包含Shiro安全功能的Web应用程序项目。 综上所述,"Maven+Spring+SpringMVC+Mybatis整合的空框架"是一个集成了Maven构建工具、Spring核心框架、...

    maven+spring+jetty+logback简单项目源码

    在IT行业中,构建Web应用程序是一项常见的任务,而`Maven`、`Spring`和`Jetty`是开发者常使用的工具。这个"maven+spring+jetty+logback简单项目源码"提供了一个基础框架,方便新手快速入门并实践这些技术。 首先,`...

    groovy+maven+spring

    Spring的IoC(Inversion of Control,控制反转)容器负责对象的创建和管理,而AOP(Aspect-Oriented Programming,面向切面编程)则允许开发者声明式地添加横切关注点,如日志、事务管理等。 在"spring工程下注入...

    maven+spring+springmvc+hibernate项目示例

    Spring是一个全面的企业级应用开发框架,支持IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。它提供了丰富的功能,包括依赖注入、数据访问、事务管理、安全管理以及对...

    Maven+spring+ struts2+ Ibatis+mysql整合增删改查

    "Maven+Spring+Struts2+Ibatis+MySQL"就是一个常见的企业级Java Web开发组合,它们各自扮演着不同的角色,共同构建了一个功能强大的应用程序。下面我们将详细探讨这些技术及其在整合中的作用。 **Maven** Maven是...

    Struts2+Spring3+Hibernate4+Maven+EasyUI整合视频教程源码

    2. **Spring3**:Spring是一个全方位的轻量级应用框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等核心特性。Spring3增强了对其他框架如Hibernate的支持,...

    maven+spring-mvc+spring+mybatis简单的登陆注册,让你更加快速上手

    Spring框架是Java企业级应用的核心,它提供了IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)等特性。在本项目中,Spring负责管理对象的生命周期和依赖关系,比如数据库...

    maven+spring3+struts2+hibernate4+mybatis3整合

    Spring3是IoC(Inversion of Control)和AOP(Aspect Oriented Programming)容器,它提供了强大的依赖注入机制,帮助解耦应用程序的各个组件。Spring3还包含了许多模块,如Spring MVC用于Web层,Spring JDBC和...

    maven(springmvc+spring+hibernate)

    Spring的主要特点是依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)。依赖注入使得对象之间的依赖关系得以解耦,提高了代码的可测试性和可维护性。而面向切面编程则允许...

    ssi(struts+spring+maven+mybatis)整合

    Maven使用POM(Project Object Model)文件来描述项目,使得项目的构建、测试和部署过程更加标准化和自动化。 **4. MyBatis:**MyBatis是一个优秀的持久层框架,它简化了Java与数据库的交互,通过XML或注解方式配置...

    maven+springmvc+spring+mybatis框架V1.0

    《构建基于Maven、SpringMVC、Spring和MyBatis的Web应用框架V1.0详解》 在软件开发领域,高效且稳定的架构是项目成功的关键。本篇将深入探讨如何构建一个基于Maven、SpringMVC、Spring和MyBatis的Web应用框架V1.0,...

    maven+Spring+SpringMvc+mybatis

    Spring是一个全面的Java企业级应用开发框架,它提供了IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)等核心功能。SpringMVC是Spring框架的一部分,专用于构建Web应用的...

    Maven+Spring+MyBatis+MySql增删改查

    2. Spring框架:Spring是Java企业级应用的事实标准,它提供了全面的应用架构支持,包括依赖注入(Dependency Injection, DI)、面向切面编程(Aspect-Oriented Programming, AOP)、数据访问、事务管理、Web应用以及...

    maven+spring+cxf

    Spring是一个开源的Java企业级应用框架,以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)而闻名。Spring4.1.6版本是这个项目所使用的,它提供了诸如数据访问、事务...

    ssm+maven+shiro

    总结来说,"ssm+maven+shiro"项目是一个完整的Java Web应用示例,它展示了如何使用Spring、Spring MVC和MyBatis构建业务逻辑,通过Maven进行项目管理,以及利用Apache Shiro实现安全控制。这样的项目结构和实践,...

    【源码+配置教程】Maven3+Spring4+Spring MVC+mybatis3整合实例

    【源码+配置教程】Maven3+Spring4+Spring MVC+mybatis3整合实例是IT领域中一种常见的Web开发框架组合,这个压缩包提供了一套完整的应用实例,旨在帮助开发者快速理解和掌握这些技术的集成与应用。在这个项目中,...

    maven+spring+springmvc+hibernate项目

    Spring是一个全面的Java应用程序开发框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等核心特性,降低了Java EE应用的复杂性。Spring的IoC容器管理着应用...

Global site tag (gtag.js) - Google Analytics