转自: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。
相关推荐
Spring通过依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP)简化了Java应用的开发。在Maven项目中,我们可以通过在POM.xml中添加Spring的相关依赖,如`spring-context`,`...
【标题】"maven +spring3 +springmvc3 +hibernate4" 是一个基于Maven构建的Web项目,它整合了Spring框架的三个主要组件:Spring Core、Spring MVC和Hibernate 4。这个项目旨在为初学者提供一个基础的参考模板,其中...
3. Spring:Spring 是一个全面的Java企业级应用开发框架,其核心特性包括依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)。Spring 提供了对事务管理、数据访问/集成(包括...
在本框架中,"shiro-spring Maven Webapp"可能是指使用Maven构建的包含Shiro安全功能的Web应用程序项目。 综上所述,"Maven+Spring+SpringMVC+Mybatis整合的空框架"是一个集成了Maven构建工具、Spring核心框架、...
在IT行业中,构建Web应用程序是一项常见的任务,而`Maven`、`Spring`和`Jetty`是开发者常使用的工具。这个"maven+spring+jetty+logback简单项目源码"提供了一个基础框架,方便新手快速入门并实践这些技术。 首先,`...
Spring的IoC(Inversion of Control,控制反转)容器负责对象的创建和管理,而AOP(Aspect-Oriented Programming,面向切面编程)则允许开发者声明式地添加横切关注点,如日志、事务管理等。 在"spring工程下注入...
Spring是一个全面的企业级应用开发框架,支持IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。它提供了丰富的功能,包括依赖注入、数据访问、事务管理、安全管理以及对...
"Maven+Spring+Struts2+Ibatis+MySQL"就是一个常见的企业级Java Web开发组合,它们各自扮演着不同的角色,共同构建了一个功能强大的应用程序。下面我们将详细探讨这些技术及其在整合中的作用。 **Maven** Maven是...
2. **Spring3**:Spring是一个全方位的轻量级应用框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等核心特性。Spring3增强了对其他框架如Hibernate的支持,...
Spring框架是Java企业级应用的核心,它提供了IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)等特性。在本项目中,Spring负责管理对象的生命周期和依赖关系,比如数据库...
Spring3是IoC(Inversion of Control)和AOP(Aspect Oriented Programming)容器,它提供了强大的依赖注入机制,帮助解耦应用程序的各个组件。Spring3还包含了许多模块,如Spring MVC用于Web层,Spring JDBC和...
Spring的主要特点是依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)。依赖注入使得对象之间的依赖关系得以解耦,提高了代码的可测试性和可维护性。而面向切面编程则允许...
Maven使用POM(Project Object Model)文件来描述项目,使得项目的构建、测试和部署过程更加标准化和自动化。 **4. MyBatis:**MyBatis是一个优秀的持久层框架,它简化了Java与数据库的交互,通过XML或注解方式配置...
《构建基于Maven、SpringMVC、Spring和MyBatis的Web应用框架V1.0详解》 在软件开发领域,高效且稳定的架构是项目成功的关键。本篇将深入探讨如何构建一个基于Maven、SpringMVC、Spring和MyBatis的Web应用框架V1.0,...
Spring是一个全面的Java企业级应用开发框架,它提供了IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)等核心功能。SpringMVC是Spring框架的一部分,专用于构建Web应用的...
2. Spring框架:Spring是Java企业级应用的事实标准,它提供了全面的应用架构支持,包括依赖注入(Dependency Injection, DI)、面向切面编程(Aspect-Oriented Programming, AOP)、数据访问、事务管理、Web应用以及...
Spring是一个开源的Java企业级应用框架,以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)而闻名。Spring4.1.6版本是这个项目所使用的,它提供了诸如数据访问、事务...
总结来说,"ssm+maven+shiro"项目是一个完整的Java Web应用示例,它展示了如何使用Spring、Spring MVC和MyBatis构建业务逻辑,通过Maven进行项目管理,以及利用Apache Shiro实现安全控制。这样的项目结构和实践,...
【源码+配置教程】Maven3+Spring4+Spring MVC+mybatis3整合实例是IT领域中一种常见的Web开发框架组合,这个压缩包提供了一套完整的应用实例,旨在帮助开发者快速理解和掌握这些技术的集成与应用。在这个项目中,...
Spring是一个全面的Java应用程序开发框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等核心特性,降低了Java EE应用的复杂性。Spring的IoC容器管理着应用...