`
加州板栗
  • 浏览: 26597 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

初识spring依赖注入和AOP

阅读更多

 依赖注入就不不多讲直接见程序体现,主要说说面向切面的编程(AOP)

 首当其冲的自然是创建一个典型的spring切面

  • 创建通知,通常Spring有5种形式的通知:Before,After-returning ,After-throwing,Around,Introduction
  • 定义切点和通知者:正则表达式切点and联合切点与通知者

其次就是创建代理了,通常采用ProxyFactoryBean,当然还有自动代理

 

ApplicationContext.xml(spring的关键配置文件)如下:

<?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="music" class="entertainment.PopMusic"></bean>
	
	<bean id="singerTarget" class="entertainment.PopSinger">
		<property name="name" value="Michael Jackson"></property>
		<property name="song" ref="music"></property>
	</bean>
	
	<bean id="listener" 
		class="entertainment.Listener"/>		
	<bean id="listenerAdvice" 
		class="entertainment.ListenerAdvice">
		<property name="listener" ref="listener"/>
	</bean>
	
	<!--定义切点和通知者-->
	<bean id="listenAdvisor" 
		class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
		<property name="advice" ref="listenerAdvice"/>
		<property name="pattern" value=".*sing"/>
	</bean>
	
	<!--设置代理-->
	<bean id="audienceProxyBase"
		class="org.springframework.aop.framework.ProxyFactoryBean"
		abstract="true">
		<property name="proxyInterfaces" value="entertainment.Singer"/>
		<property name="interceptorNames" value="listenAdvisor"/>
	</bean>
	<bean id="singer" parent="audienceProxyBase">
		<property name="target" ref="singerTarget"/>
	</bean>
	

</beans>
 

 来看看这几个关键的bean:

  • singerTarget,对应了PopSinger类(实现了Singer接口),property(name)调用setName()方法,property(song)调用setSong()方法,其中song指定到music Bean
  • listenAdvisor Bean定义了一个具有正则表达式切点的通知者,RegexpMethodPointcutAdvisor是个特殊的通知者类,可以在一个Bean里定义切点和通知者。
  • Singer Bean是扩展自audienceProxyBase Bean,
  • Singer Bean的第一个属性告诉ProxyFactoryBean哪个是Bean的代理,interceptorNames则告诉ProxyFactoryBean哪个通知者要应用于被代理的Bean
  • proxyInterfaces属性告诉ProxyFactoryBean代理应该实现哪个接口

 

通知者类:

package entertainment;

import java.lang.reflect.Method;

import org.springframework.aop.AfterReturningAdvice;
import org.springframework.aop.MethodBeforeAdvice;
/*
 * 创建通知
 */
public class ListenerAdvice implements MethodBeforeAdvice,AfterReturningAdvice{
	private Listener listener;
	public void before(Method arg0, Object[] arg1, Object arg2) throws Throwable {
		listener.takeSeat();
		
	}

	public void afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3) throws Throwable {
		listener.applaud();
		
	}
	public void setListener(Listener listener){
		this.listener=listener;
	}

	
}
分享到:
评论

相关推荐

    初识Spring

    【初识Spring】 Spring框架是Java企业级应用开发中的核心框架,它为开发者提供了一个全面的基础设施,用于创建稳定、高性能的应用程序。Spring的核心特性包括依赖注入(Dependency Injection,DI)、面向切面编程...

    初识Spring框架-资料.rar

    Spring框架是Java开发领域中最广泛使用的轻量级框架之一,以其强大的依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)能力而闻名。初学者通过“初识Spring框架-...

    SSM框架的学习与应用-Java EE企业级应用开发学习记录-(第六天)初识Spring框架

    本资源是一篇关于学习和应用SSM框架(Spring、SpringMVC、MyBatis)的学习记录系列文章中的第六天内容,主题为初识Spring框架。 在这一部分中,你将了解到Spring框架的基本概念和使用方法,并通过实例探讨了Spring ...

    第1章 初识Spring的基本应用.ppt

    本章内容主要涵盖Spring的核心容器、依赖注入以及Spring的概述和入门程序,旨在帮助开发者深入理解和熟练运用Spring框架。 **Spring的核心容器**是Spring框架的基础,它主要包括Beans、Core、Context和SpEL模块。...

    Spring基础篇之初识DI和AOP

    Spring框架核心介绍中,DI(Dependency Injection,依赖注入)和AOP(Aspect-Oriented Programming,面向方面编程)是两个非常重要的概念。DI解决了类与类之间的依赖关系,让类可以专注于自己的功能实现,而不需要...

    Java开发学习(一)----初识Spring及其核心概念.doc

    接下来,我们聚焦Spring的核心概念——IOC(控制反转)和DI(依赖注入)。 在传统的软件开发中,对象通常自行创建依赖的对象,导致高耦合性。例如,业务层直接new数据层的对象,当数据层实现改变时,业务层也需要随...

    深入解析Java Spring框架

    2.1 初识Spring的感受 分享我初次接触Spring的经历,包括遇到的挑战和对框架的第一印象。探讨在学习过程中的收获和解决问题的思路。 2.2 深度理解依赖注入 详述对Spring的依赖注入机制的理解,以及它对代码可维护性...

    01Spring初识.pdf

    进一步地,Spring框架还提供了面向切面编程(AOP)和依赖注入(DI)等关键特性,支持将不同层次的业务逻辑进行分离,并且能够将对象间的依赖关系自动绑定在一起,极大地提高了系统的灵活性和可维护性。 其次,...

    Beginning Spring 5 From Novice to Professional

    1. **Spring核心**:学习IoC(控制反转)和DI(依赖注入)的概念,理解Spring容器如何管理对象的生命周期和依赖关系。通过XML、注解和Java配置三种方式来配置Spring。 2. **AOP(面向切面编程)**:了解AOP的基本...

    Spring学习课件PPT

    Spring框架是中国Java开发领域中最广泛使用的轻量级框架之一,以其强大的依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)能力而闻名。这个“Spring学习课件PPT”...

    定时框架spring+quartz

    这种集成方式的一个显著优点是,Spring的依赖注入和AOP特性可以应用于Quartz Job,使得任务的编写和管理更加方便。此外,由于Quartz支持集群,因此在多服务器环境下,可以实现任务的高可用性和负载均衡。 在ssh2_...

    跟我学spring3pdf,高清

    Spring的核心特性包括依赖注入(Dependency Injection,DI)、面向切面编程(Aspect-Oriented Programming,AOP)以及丰富的数据访问支持,如JDBC模板和ORM集成。在Spring 3.x版本中,这些功能得到了进一步增强和...

    Spring框架、SpringMVC框架、Maven高级(缺)、SpringBoot框架、MyBatis-Plus框架

    Spring 框架是 Java 开发中的一个核心组件,它为应用程序提供了依赖注入(Dependency Injection,简称 DI)和控制反转(Inversion of Control,简称 IoC)的能力,从而简化了对象之间的关系管理。Spring 框架的核心...

    spring-framework-4.2.x.zip

    Spring Framework 4.2 是一个极为重要的版本,它是Java开发中的基石,为开发者提供了全面的轻量级应用程序框架,包括了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)以及数据访问等核心功能。这个版本的...

    1. Spring初识-核心容器.pdf

    - 依赖注入(DI),这是一种实际的IoC实现,通过控制反转容器管理对象的创建和它们之间的依赖关系。 Spring框架的子模块非常丰富,其中最为重要的三个部分包括: 1. CoreContainer(核心容器):它由spring-core, ...

    Spring技术内幕:深入解析Spring架构与设计原理(完整版)

    首先,Spring框架的核心特性之一是依赖注入(Dependency Injection, DI)。DI使得对象之间的依赖关系得以解耦,增强了代码的可测试性和灵活性。通过XML配置、注解或Java配置,Spring能够管理对象的生命周期和依赖...

    Spring开发指南_夏昕PDF

    总之,无论你是初识Spring的新人还是经验丰富的开发者,阅读《Spring开发指南》都能让你对Spring有更深入的理解,提升你的开发技能。通过学习本书,你将能够更好地利用Spring框架构建高效、稳定的Java应用。

    spring-5.2.5.RELEASE-dist.zip

    Spring的核心理念是依赖注入(Dependency Injection,简称DI),它通过反转控制(Inversion of Control,IoC)来实现。DI使得组件之间的耦合度降低,提高了代码的可测试性和可维护性。 2. **主要模块** - **Core ...

    spring-framework-5.1.0.RELEASE-dist

    Spring框架的核心是依赖注入(Dependency Injection,DI),它允许开发者通过接口编程,减少代码间的耦合。在5.1.0版本中,这一核心机制得到了优化,使得组件之间的装配更加灵活,同时增强了对Java 8特性的支持。 ...

Global site tag (gtag.js) - Google Analytics