码迷,mamicode.com
首页 > 编程语言 > 详细

Spring笔记——1.Spring简介

时间:2015-09-01 10:51:43      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:spring bean

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元素用于指定参数类型。

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

本文出自 “指尖轻飞” 博客,谢绝转载!

Spring笔记——1.Spring简介

标签:spring bean

原文地址:http://mengcao.blog.51cto.com/9395052/1690387

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!