spirng简单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:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<bean id="aService" class="com.aop.services.Aservice"></bean>
<bean id="bService" class="com.aop.services.Bservice"></bean>
<!--切面类-->
<bean id="myAspect" class="com.aop.aspects.MyAspect"></bean>
<aop:config>
<!--切面类配置 -->
<aop:aspect ref="myAspect" id="my">
<!-- 切入点配置 -->
<aop:pointcut expression="execution(* com.aop.services.*.*(..))"
id="mytarget" />
<!--通知方式 -->
<aop:after method="doAfter" pointcut-ref="mytarget" />
<aop:before method="doBefore" pointcut-ref="mytarget" />
</aop:aspect>
</aop:config>
</beans>
切面类:
public class MyAspect {
public void doAfter(JoinPoint jp) {
System.out.println("调用后"+jp.getTarget().getClass().getName() + "."
+ jp.getSignature().getName());
}
public void doBefore(JoinPoint jp) {
System.out.println("调用前"+jp.getTarget().getClass().getName() + "调用方法."
+ jp.getSignature().getName());
}
}
普通业务类
public interface IService {
public void foo(String msg ,int type);
public void bar();
}
public class Aservice implements IService {
public void bar() {
// TODO Auto-generated method stub
}
public void foo(String msg, int type) {
// TODO Auto-generated method stub
System.out.println("AServiceImpl.barA(msg:"+msg+" type:"+type+")");
}
}
public class Bservice implements IService {
public void bar() {
// TODO Auto-generated method stub
System.out.println("BServiceImpl.fooB()");
}
public void foo(String msg, int type) {
// TODO Auto-generated method stub
System.out.println("BServiceImpl.barB(msg:"+msg+" type:"+type+")");
}
}
测试类:
public class TestAop {
/**
* @param args
*/
@SuppressWarnings("deprecation")
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext ac = new FileSystemXmlApplicationContext(
"src/applicationContext.xml");
IService aService = (IService) ac.getBean("aService"); IService
bService = (IService) ac.getBean("bService");
System.out.println("开始调用aService方法");
aService.foo("hello", 0);
System.out.println("--------------------");
System.out.println("开始调用bService方法");
bService.foo("world", 1);
}
}
分享到:
相关推荐
在Spring AOP(面向切面编程)中,自定义切面是实现业务逻辑解耦、增强代码可维护性的重要手段。AspectJ是一个强大的面向切面的编程库,它提供了与Spring AOP集成的能力,使我们可以编写更为灵活和模块化的代码。...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它允许我们在不修改源代码的情况下对应用程序的行为进行统一管理和控制。在本实例中,我们将深入探讨如何使用AspectJ技术和XML配置来实现AOP。 首先,了解...
在本示例中,我们将深入探讨Spring框架2.5.6版本中的面向切面编程(AOP)概念。Spring AOP是Spring框架的核心组件之一,它允许开发者在不修改源代码的情况下,对程序进行横切关注点(如日志、事务管理、性能监控等)...
Spring框架是Java开发中不可或缺的一部分,它以其强大的依赖注入(IOC)和面向切面编程(AOP)功能闻名。在本示例中,我们将深入理解这两个核心概念。 **依赖注入(IOC)** 依赖注入(Inversion of Control)是...
在IT行业中,Spring AOP(面向切面编程)是一种强大的工具,它允许程序员在不修改原有业务代码的情况下,实现如日志记录、性能监控、事务管理等横切关注点的功能。本示例将深入探讨Spring AOP的基础知识,以及如何在...
Spring AOP 1.0是Spring框架早期的一个版本,它引入了面向切面编程(Aspect Oriented Programming,AOP)的概念,使得开发者可以方便地实现横切关注点,如日志记录、事务管理、性能监控等,从而提高代码的可读性和可...
**Spring AOP切面编程简介** 在Java世界中,面向切面编程(Aspect-Oriented Programming,简称AOP)是一种编程范式,它允许我们分离关注点,将横切关注点(如日志、事务管理、性能监控等)与业务逻辑代码解耦。...
面向切面编程(Aspect-Oriented Programming,AOP)是Spring框架的核心特性之一,它提供了一种优雅的方式来处理系统的横切关注点,如日志、事务管理、性能监控和权限控制等。在Spring中,AOP主要通过代理模式实现,...
例如,以下是一个简单的日志切面示例: ```java @Aspect public class LoggingAspect { @Before("execution(* com.example.service.*.*(..))") public void logBefore(JoinPoint joinPoint) { // 获取方法签名和...
在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点从业务逻辑中分离出来,比如日志记录、事务管理、权限检查等。`@Aspect`是Spring AOP的核心注解,用于定义一个切面。下面我们将详细...
Spring Boot AOP(面向切面编程)是一种强大的设计模式,它允许我们在不修改现有代码的情况下,插入额外的功能或监控代码。在Spring框架中,AOP主要用于日志记录、事务管理、性能统计等场景。本示例是关于如何在...
在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许我们在不修改源代码的情况下,对程序进行横向关注点的插入,比如日志记录、事务管理、权限检查等。在这里,我们重点关注如何利用Spring AOP实现分层...
### Spring AOP 配置切面实例解析 #### 一、引言 本文将通过一个具体的例子来介绍如何在Spring框架中使用面向切面编程(Aspect Oriented Programming, AOP)。我们将关注如何定义一个切面(Aspect),以及如何在...
总结一下,Spring通过XML配置实现AOP切面编程,主要包括以下几个步骤: 1. 定义切面类,包含切面逻辑方法。 2. 在XML配置文件中声明切面类bean。 3. 使用`aop:config`定义切面的配置,包括切入点表达式和通知类型。 ...
在这个主题中,我们将深入探讨"最简单的aop切面方法"。 首先,让我们了解AOP的基本概念。AOP的核心是切面(Aspect),它封装了跨越多个对象的行为或责任。在Spring框架中,切面可以通过编写Aspect类来实现。切面...
Spring AOP 简单入门示例 AOP(Aspect-Oriented Programming),即面向方面编程,是一种编程范式。AOP 是 OOP 的补充,它将系统中的横切性关注点模块化,并将其与业务逻辑分离。 在 Spring 中,AOP 是通过使用 ...
以下是一个简单的Spring AOP使用示例: ```java @Aspect public class LoggingAspect { @Before("execution(* com.example.service.*.*(..))") public void logBefore(JoinPoint joinPoint) { // 日志记录代码 ...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、事务管理、安全性等。本示例将简要介绍如何在Spring应用中实现AOP,通过实际的...
Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许开发者在不修改源代码的情况下,通过插入切面来增强或改变程序的行为。在本教程中,我们将深入探讨Spring AOP的不同使用方法,包括定义切点、通知类型...
Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的一个重要组成部分。它提供了一种模块化和声明式的方式来处理系统中的交叉关注点,如日志、性能监控、安全性、事务管理等。通过AOP,...