Spring笔记——1.Spring简介

Spring是一种轻量级的架构,能够帮助我们更好地管理java类(Bean)之间的依赖关系,极大提高企业应用开发速率。我们可以使用MyEclipse自带的增加Spring Capacities工具来为项目增加Spring

功能。User Library里面需要有spring lib包下面的所有jar,以及一个名为common-logging的jar包(需要额外下载,web项目需要)。

使用Spring管理Bean

我们可以使用applicationContext.xml文件更好地,无浸入地管理Bean之间的关系。Spring把容器中的一切对象统称为Bean。

<bean id="chinese" class="com.cm.Chinese">
<property name="axe" ref="steelAxe"/>

</bean>
<bean id="steelAxe" class="com.cm.SteelAxe">
<property name="name" value="alvincccc"/>
</bean>

这种配置方式能够使架构明白各个Bean之间的依存关系,在创建某个Bean之后,其他所需的所有bean都会被创建好。架构会通过反射根据bean元素中de类名创建一个java对象,放入Srping容器中。架构只要看到一个property元素,就会在底层执行一次set方法,如果是value则设值,如果是ref,则用容器中的bean设定,所以!当使用ref时注意顺序必须是容器中有的!

访问bean使用ApplicationContext这个接口,常用实现类有ClassPathXmlApplicationContext和FileSystemXmlApplicationContext,第一个常用。

ApplicationContext ctx=newClassPathXmlApplicationContext(“beans.xml");
Chinese c=ctx.getBean("chinese",Person.class);

这样就得到实例了!

Spring的依赖注入

成员变量的值如果是一个对象,不是主动设置的,而是架构自动完成。如果是值,则直接自动set。注入方式分为设值注入跟构造注入。区别就是使用set还是构造器。PS:这里我们推荐使用面向接口编程。

由于xml中的耦合都是接口层次的,因此我们可以随意地改变实现类并重新配置xml,而无需对代码进行修改。例如:

<bean id="person" class="com.cm.Person">
<property name="axe" ref="stoneAxe"/>
</bean>

<bean id="stoneAxe" class="com.cm.StoneAxe"/>

而我们在person实现类中使用了stoneAxe中的方法,输出“石斧”。当我们不想要石斧了,只需要如下修改:

<bean id="person" class="com.cm.Person">
<property name="axe" ref="steelAxe"/>
</bean>
<bean id="steelAxe" class="com.cm.SteelAxe"/>

通过此例,面向接口编程与接口级别的松耦合的好处可见一斑!当然person中的成员变量应该是接口名,而不是具体的实现类名。

构造注入指的是通过构造器设置依赖关系的方式。由于bean元素默认spring使用无参数构造器创建对象,因此我们需要使用constructor-arg子元素来驱动spring来使用有参数构造器创建对象。在这种方式下,实例构建好了,依赖关系也完成了(而设置是,先有实例,然后再set)。这种方式下,对象类型的成员变量无需set方法,而是在构造其中指定。xml中,在bean下使用construcotr-arg ref来传入构造器中的参数,注意顺序数量。它还有个tpye元素用于指定参数类型。

两种方式对比:它们可以同时存在,没有绝对好坏。设置的更容易理解,关系直观,能应对复杂的依赖关系与成员变量可变的情况。构造的,可以在构造器中决定依赖关系的注入顺序,优先依赖优先注入。

时间: 2024-10-17 21:57:14

Spring笔记——1.Spring简介的相关文章

Spring笔记1——Spring起源及其核心技术

Spring的作用 当我们使用一种技术时,需要思考为什么要使用这门技术.而我们为什么要使用Spring呢?从表面上面SSH这三大框架中,Struts是负责MVC责任的分离,并且提供为Web层提供诸如控制转发.数据校验,类型转换等功能.Hibernate负责将二维数据表抽象成实体类,让我们能够从面向数据表转向面向实体类开发即面向对象开发.而Spring在干什么呢?Spring似乎什么都没干,但好像少了它又不行.Spring究竟是做什么的呢?我们首先从Spring的起源来看. 提到Spring技术,

Spring笔记2——Spring中Bean的装配

1.引言 Spring中,对象无需自己负责查找或创建与其关联的其他对象,而是由容器负责把需要相互协作的对象引用赋予各个对象.创建应用对象之间的协作关系的行为通常称为装配(Wiring),这也是依赖注入的本质. 2.声明Bean 配置Bean的方式主要有两种:基于XML文件的配置方式和基于Java注解的配置方式.传统的基于XML文件的配置方式在声明Bean时,Spring配置文件的根元素来源于Spring beans命名空间所定义的<beans>元素.除了beans命名空间外,Java自带了多种

Spring.net(一)----Spring.NET框架简介及模块说明

简介:    Spring.NET框架包括很多功能,Spring.NET 1.0包括完整的IoC容器和AOP类库.1.1版加入Web.ORM和数据模块.Spring.NET的下载包中并不包含与其它类库(如NHibernate,TIBCO EMS,Anthem,和IIOP.NET)集成的模块,如果需要您可以单独下载. Spring Framework天生丽质,因为其先进的架构和对一系列前沿开发思想的集成,使它从一产生就深得开发者欢迎,它将设计模式运用到了炉火纯青的地方,它的幽雅和魅力征服了许多JA

Spring笔记2

IOC/DI简介: DI为依赖注入,通常来说bean是自己控制对象的实例化等工作(即依赖关系).但在Spring容器中,创建bean的同时完成了注入依赖关系的工作. IOC为控制反转,其与DI的意义类似,即本来bean自己控制实例化,现在成了创建bean时便完成了实例化等依赖工作,所以称为控制反转. ”依赖注入(DI)背后的基本原理是对象之间的依赖关系(即一起工作的其它对象)只会通过以下几种方式来实现:构造器的参数.工厂方法的参数,或给由构造函数或者工厂方法创建的对象设置属性.因此,容器的工作就

[转]spring 监听器 IntrospectorCleanupListener简介

"在服务器运行过程中,Spring不停的运行的计划任务和OpenSessionInViewFilter,使得Tomcat反复加载对象而产生框架并用时可能产生的内存泄漏,则使用IntrospectorCleanupListener作为相应的解决办法."对于这一句话,引用关于IntrospectorCleanupListener一段解释:引用spring中的提供了一个名为org.springframework.web.util.IntrospectorCleanupListener的监听器

Spring表达式语言SpEL简介

Spring3引入了Spring表达式语言(Spring Expression Language,SpEL). SpEL有很多特性,比较常用的包括: 1.使用bean的id来引用bean, 下面这个例子就是将卧室这个bean通过SpEL注入到house这个bean的bedroom属性中. <bean id="bedroom" class="go.derek.Bedroom"/> <bean id="house" class=&q

mybatis学习笔记(14)-spring和mybatis整合

mybatis学习笔记(14)-spring和mybatis整合 mybatis学习笔记14-spring和mybatis整合 整合思路 整合环境 sqlSessionFactory 原始dao开发和spring整合后 mapper代理开发 遇到的问题 本文主要将如何将spring和mybatis整合,只是作简单的示例,没有使用Maven构建.并展示mybatis与spring整合后如何进行原始dao开发和mapper代理开发. 整合思路 需要spring通过单例方式管理SqlSessionFa

Spring笔记(4)-----&lt;bean&gt;的基本配置

Spring容器成功需要具备的三个条件: 1)Spring框架的类包都已经放在应用程序的类路径下. 2)应用程序为Spring提供了完备的Bean配置信息. 3)Bean的类都已经放在类路径下. Spring启动时读取应用程序的Bean配置信息,在容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean的依赖关系,为上层应用提供准备就绪的运行环境. Bean的配置信息是Bean的元数据信息,有4部分: 1)Bean的实现类. 2)Bean的属性信息. 3)Bean

spring笔记(一)

这几日,在看spring框架的知识,了解了一下spring的IoC核心,AOP的概念,然后剩下的其实就是Spring对于其他的java服务的封装:ORM,web, JMS,JMX等. 坦白地说,我并没有完全理解spring的结构,首先它的API,我还不是很清楚,现在能至少做个分类.其次,spring框架和ORM之类的框架在做集成时的编程经验,我还没有. 后面的路要一分为二,继续对于spring底层的细节进行学习和了解,其次对于spring和其他组件整合的知识在实践中学习.看书估计不管用了. sp