1.第一个例子
1)定义接口
ServiceBean.java
public interface ServiceBean {
public void addUser();
public void deleteUser();
public void updateUser();
public void findUser();
}
2)实现接口
MyServiceBean.java
public class MyServiceBean implements ServiceBean {
public void addUser() {
System.out.println("addUser()");
}
public void deleteUser() {
System.out.println("deleteUser()");
}
public void findUser() {
System.out.println("findUser()");
}
public void updateUser() {
System.out.println("updateUser()");
}
}
3)编写spring配置文件beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="serviceTarget" class="com.dexter.service.MyServiceBean" />
</beans>
4)请求spring生成servicebean
public class Main {
public static void main(String[] args) {
XmlBeanFactory xb = new XmlBeanFactory(new ClassPathResource("beans.xml"));
ServiceBean sb = (ServiceBean)xb.getBean("service");
sb.addUser();
xb.destroySingletons();
}
}
2.初步spring aop
1)编写一个LogAdvisor类,这个类是实现MethodBeforeAdvisor接口,实现其中的方法,这个方法在主业务方法 被调用前调用。
import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
public class LogAdvisor implements MethodBeforeAdvice {
@Override
public void before(Method m, Object[] args, Object target)
throws Throwable {
System.out.println("[Log] " + target.getClass().getName() + "." + m.getName() + "()");
}
}
2)编写beans.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="serviceTarget" class="com.dexter.service.MyServiceBean" />
<bean id="logAdvisor" class="com.dexter.service.LogAdvisor"></bean>
<!--请求ProxyFactoryBean类生成代理对象-->
<bean id="service"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>com.dexter.service.ServiceBean</value>
</property>
<property name="target">
<ref local="serviceTarget" />
</property>
<property name="interceptorNames">
<list>
<value>logAdvisor</value>
</list>
</property>
</bean>
</beans>
3)调用
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
public class Main {
public static void main(String[] args) {
XmlBeanFactory xb = new XmlBeanFactory(new ClassPathResource("beans.xml"));
ServiceBean sb = (ServiceBean)xb.getBean("service");
sb.addUser();
xb.destroySingletons();
}
}
3.编写方法过滤器,编写MethodAdvisor类
1) 编写MethodAdvisor.java
public class MethodAdvisor implements MethodInterceptor {
@Override
public Object invoke(MethodInvocation m) throws Throwable {
m.proceed();
System.out.println("MethodAdvisor invoked,"+m.getMethod().getName());
return "MethodAdvisor invoked";
}
}
2)写配置文件,请求RegexpMethodPointcutAdvisor类过滤指定的方法
<bean id="methodAdvisorTarget"
class="com.dexter.service.MethodAdvisor">
</bean>
<bean id="methodAdvisor"
class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice">
<ref local="methodAdvisorTarget" />
</property>
<property name="patterns">
<list>
<!--过滤addUser这个指定的方法-->
<value>.*addUser</value>
</list>
</property>
</bean>
<bean id="service"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>com.dexter.service.ServiceBean</value>
</property>
<property name="target">
<ref local="serviceTarget" />
</property>
<property name="interceptorNames">
<list>
<value>logAdvisor</value>
<value>methodAdvisor</value>
</list>
</property>
</bean>
4.异常aop
1)编写ExceptionAdvisor类
import org.springframework.aop.ThrowsAdvice;
public class ExceptionAdvisor implements ThrowsAdvice {
public void afterThrowing(RuntimeException re) throws Throwable {
System.out.println("[Exception] " + re.getMessage());
}
}
2)配置beans.xml
<bean id="service"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>com.dexter.service.ServiceBean</value>
</property>
<property name="target">
<ref local="serviceTarget" />
</property>
<property name="interceptorNames">
<list>
<value>logAdvisor</value>
<value>passwordAdvisor</value>
<value>exceptionAdvisor</value>
</list>
</property>
</bean>
3)如果在业务方法执行时候有异常,那么ExceptionAdvisor的afterThrowing方法被执行
分享到:
相关推荐
这本书籍“一本很不错的关于spring入门的书籍”显然是针对初学者设计的,旨在帮助新手快速掌握Spring的基本概念和核心功能。 Spring框架的核心特性包括: 1. **依赖注入(Dependency Injection,简称DI)**:这是...
《Spring入门代码项目详解》 在IT行业中,Spring框架无疑是最受欢迎的Java企业级应用开发框架之一。本项目旨在帮助初学者快速入门Spring,通过实际的代码操作来理解和掌握Spring的核心概念与用法。以下是对每个子...
spring入门经典+源代码.Spring入门经典 一书全面透彻地介绍Spring Framework;Spring Framework是Java开发领域最流行的框架,是事实上的企业级应用开发标准。本书浓墨重彩地描述实际的企业级解决方案,每一章都提供了...
Spring框架是Java开发中...本教程的文档《Spring入门教程.doc》将深入讲解这些概念,并提供实例代码和步骤说明,帮助你从零开始学习Spring,逐步成长为一名熟练的Spring开发者。请打开文档,开始你的Spring学习之旅吧!
《Spring入门经典》是一本由Mert Caliskan和Kenan Sevindik共同撰写的书籍,主要面向希望深入理解并掌握Spring框架的初学者。Spring是Java领域中最为广泛使用的开源框架,它提供了一个全面的编程和配置模型,旨在...
本资源"Spring入门经典源代码"旨在帮助初学者快速理解并掌握Spring框架的核心概念和使用方法。这本书籍结合了丰富的示例代码,使得理论与实践相结合,使学习过程更加直观和高效。 1. **Spring概述** Spring是一个...
Spring框架是中国Java开发领域中最广泛使用的轻量级框架之一,它以其依赖注入...这份"spring入门介绍PPT"将是你深入理解Spring的宝贵资源,通过它,你可以逐步掌握Spring的核心理念和技术,开启你的Spring开发之旅。
《Spring入门经典》是一本专为初学者和有一定基础的开发者设计的教程,它通过附带的源代码帮助读者深入理解并快速掌握Spring框架。Spring是Java开发领域中最为广泛应用的轻量级框架,它的核心特性包括依赖注入、面向...
spring入门相关jar包,相关jar包为: commons-logging-1.2.jar spring-beans-5.2.6.RELEASE.jar spring-context-5.2.6.RELEASE.jar spring-core-5.2.6.RELEASE.jar spring-expression-5.2.6.RELEASE.jar
《Spring入门经典》第二章主要围绕Spring Framework的基础知识展开,旨在为初学者提供一个全面而深入的Spring学习路径。Spring Framework作为Java开发的核心框架,它以其模块化、易用性和强大的功能深受开发者喜爱,...
Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)Spring入门教学(解决方案)Spring...
《Spring入门经典》是一本深度剖析Spring框架的入门书籍,旨在帮助初学者快速掌握Spring的核心概念和使用方法。书中的示例代码是理论知识的实践体现,通过这些代码,读者可以直观地理解Spring如何工作,如何配置,...
Spring入门级教程,从零开始教你认识Spring,了解Spring,理解Spring的两大核心IoC和AOP,教你如何使用Spring进行开发
Spring入门,关于Spring的详细解释以及spring的工作原理!
Spring入门经典 一书全面透彻地介绍Spring Framework;Spring Framework是Java开发领域最流行的框架,是事实上的企业级应用开发标准。本书浓墨重彩地描述实际的企业级解决方案,每一章都提供了通俗易懂的示例和动手...
《Spring入门书籍》是一本专为初学者设计的Spring框架学习指南。这本书旨在帮助读者从零开始,逐步掌握Spring框架的基础知识和核心概念,从而在实际项目开发中得心应手。Spring作为Java企业级应用的主流框架,其强大...
《Spring入门基础详解》 Spring框架作为Java领域中极为重要的轻量级容器,以其强大的功能和易用性深受开发者喜爱。本教程将带你逐步走进Spring的世界,了解其核心概念,并教你如何在Eclipse环境中搭建Spring开发...
首先,我们来解析一下标题"Spring入门案例"。这表明我们将学习的是Spring的基本概念和基础应用,包括如何搭建Spring项目环境,配置Spring容器,以及如何使用Spring管理Bean。Spring框架的核心是IoC(Inversion of ...