面向切面编程,要理解很多概念,如切面,连接点,通知,切入点。。。
此时新建的项目不仅要添加spring的核心包(即core),还有添加AOP功能的jar包
然后创建bean类
先创建接口
package com.sun.springaop.test;
public interface IBean {
public void theMethod();
}
然后创建实现类
package com.sun.springaop.test;
public class BeanImpl implements IBean {
@Override
public void theMethod() {
System.out.println(this.getClass().getName()+"."+new Exception().getStackTrace()[0].getMethodName()+"()"+" 正在被执行");
}
}
创建前置通知类,即在操作前执行的功能
package com.sun.springaop.test;
import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
public class TestBeforeAdvice implements MethodBeforeAdvice {
// 参数method表示具体连接点,args表示目标对象方法的参数,target返回该方法所属的目标对象
@Override
public void before(Method m, Object[] args, Object target)
throws Throwable {
System.out.println("执行前置通知");
}
}
在配置文件中,进行拦截器和bean的配置
完整的配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
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-2.0.xsd">
<!-- 定义代理 -->
<bean id="bean"
class="org.springframework.aop.framework.ProxyFactoryBean"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
<property name="proxyInterfaces">
<value>com.sun.springaop.test.IBean</value>
</property>
<property name="target">
<ref local="beanTarget" />
</property>
<property name="interceptorNames">
<list>
<value>theAdvisor</value>
</list>
</property>
</bean>
<!-- 注入对象 -->
<bean id="beanTarget" class="com.sun.springaop.test.BeanImpl"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
</bean>
<!-- 使用正则表达式方式定义切入点 -->
<bean id="theAdvisor"
class="org.springframework.aop.support.RegexpMethodPointcutAdvisor"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
<property name="advice">
<ref local="theBeforeAdvice" />
</property>
<property name="pattern">
<value>com\.sun\.springaop\.test\.IBean\.theMethod</value>
</property>
</bean>
<!-- 定义前置通知 -->
<bean id="theBeforeAdvice"
class="com.sun.springaop.test.TestBeforeAdvice" abstract="false"
lazy-init="default" autowire="default" dependency-check="default">
</bean></beans>
测试类:
package com.sun.springaop.test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
public class Client {
public static void main(String[] args) {
BeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
IBean x = (IBean) factory.getBean("bean");
x.theMethod();
}
}
执行结果:
执行前置通知
com.sun.springaop.test.BeanImpl.theMethod() 正在被执行
分享到:
相关推荐
// 第一次调用 login.login(); // 第二次调用 login.login(); // 第三次调用 ``` 5. **配置文件**: ```xml <bean id="advice" class="org.nitpro.aop.before.LoginBeforeAdvice" /> ...
"spring第一个学习的例子"旨在帮助初学者快速入门Spring框架,通过实际操作理解其基本概念和工作原理。 首先,Spring的核心特性之一是依赖注入(Dependency Injection,简称DI)。这个例子可能包含了如何在配置文件...
5. **单例模式(Singleton)**:Spring AOP中的`SingletonTargetSource`保证了每个目标对象只被创建一次,实现了单例模式,确保在整个应用程序中只有一个共享的实例存在,提高了资源利用效率。 6. **适配器模式...
Spring.NET是中国开源社区基于.NET Framework实现的一个轻量级企业级应用框架,它借鉴了Java平台上的Spring框架,为.NET开发者提供了强大的依赖注入(Dependency Injection,DI)和面向方面编程(Aspect-Oriented ...
在这篇由三部分组成的 Spring 系列 的第 1 部分中,我将介绍 Spring 框架。我先从框架底层模型的角度描述该框架的功能,然后将讨论两个最有趣的模块:Spring 面向方面编程(AOP)和控制反转 (IOC) 容器。接着将...
本实例将引导你逐步了解如何使用Spring框架构建你的第一个应用。首先,我们来详细探讨Spring的核心概念和主要组件。 Spring框架的核心是依赖注入(Dependency Injection,DI),它使得应用程序中的对象能够通过配置...
接下来,我们讨论AOP,这是Spring的一个重要特性。AOP允许我们在不修改业务逻辑的情况下,添加横切关注点,如日志、性能监控、安全控制等。在Spring中,切面可以通过定义通知(advisors)和切点(pointcuts)来实现...
标题 "第九章 Spring4 AOP" 指的是Spring框架中的面向切面编程(Aspect-Oriented Programming,简称AOP)部分。AOP是Spring框架的核心特性之一,它允许开发者在不修改原有业务代码的情况下,对系统进行横切关注点的...
在本章"Spring AOP 基础1"中,我们主要探讨了Spring AOP(面向切面编程)的核心概念和实现方式。AOP是一种编程范式,它允许程序员定义"切面",这些切面封装了跨越多个对象的横切关注点,如日志、事务管理等。以下是...
声明式事务管理是Spring的一个强项,它通过AOP(面向切面编程)来实现,使得事务管理与业务逻辑代码解耦。在XML配置文件中,我们可以使用`<tx:annotation-driven>`元素开启基于注解的事务管理,或者在Java配置类中...
首先,我们来看第一个例子——Spring_AOP_Demo01。在这个例子中,我们可能会涉及到以下几个关键知识点: 1. **AOP核心概念**:AOP允许开发者定义“横切关注点”(cross-cutting concerns),即那些跨越多个对象的...
首先,了解IoC(控制反转)是理解Spring框架的第一步。IoC是一种设计模式,它将对象的创建和依赖关系的管理从程序代码中移出,转交给外部的IoC容器来管理。在Spring中,IoC容器负责创建对象,并且管理和注入对象之间...
在"spring第一个例子"中,我们将创建一个简单的Spring应用程序。这个例子通常包括以下步骤: 1. **配置Spring**:首先,我们需要创建一个Spring的配置文件,例如`applicationContext.xml`。在这个文件中,我们会...
标题中的"第一个spring所以到的jar包"指的是一个包含了Spring框架最基本功能的最小化jar包集合。这个压缩包文件,根据描述,仅包含7个jar包,尽管精简,但在Eclipse这样的集成开发环境中,已经足够支持运行一个基础...
总的来说,"Spring第一个HelloWorld"是一个很好的起点,它可以帮助开发者建立对Spring框架的基本认识,为后续学习Spring的AOP(面向切面编程)、事务管理、数据访问、MVC等高级特性打下坚实的基础。
Spring框架是由Rod Johnson创建的一个轻量级的开源框架,它最初来源于他的书籍《Expert One-on-One J2EE Design and Development》。Spring的核心设计思想是通过配置而非编码的方式管理对象之间的关系,这使得开发者...
Spring 是一个功能强大且功能齐全的 Java 应用程序框架,提供了一个通用的基础结构来支持开发企业级应用程序。 Spring 框架的核心是控制反转(IoC)和依赖注入(DI)模式,它们使得应用程序更加灵活、可维护和可扩展...
在IT行业中,Spring AOP(面向切面编程)是一种强大的工具,它允许我们在不修改代码的情况下,添加额外的功能,如日志记录、事务管理、安全控制等。在"spring aop 读写分离"的场景下,我们主要关注如何利用Spring ...
Spring框架是Java开发中的核心组件,它以依赖注入(Dependency...在学习"Spring第一章"时,你将了解这些基本概念,并通过实例学习如何配置和使用Spring框架。逐步掌握Spring将使你能够构建出更高效、可维护的Java应用。
这个"Spring入门小实例"可能包含了创建简单的Spring应用的步骤,例如设置环境,创建第一个Spring MVC项目,编写控制器,配置数据源,进行数据库操作等。通过实践这些小实例,初学者可以逐步理解并掌握Spring框架的...