Spring 的核心是轻量级的容器,它实现了IoC 容器、非侵入性的框架,并提供AOP 概念的实现方式,提供对持久层、事务的支持,提供MVC Web 框架的实现,并对一些常用的企业服务A PI提供一致的模型封装,是一个全方位的应用程序框架,另外,Spring 也提供了对现有框架(Struts、JSF、Hibernate 等)的整合方案。
一.IOC依赖注入:
Spring通过在xml文件中配置<bean />标签来设置相应的bean,然后可以在程序中使用ApplicationContext借口来读取已经配置的bean,并且可以在xml中配置注入方式来实现IOC(依赖注入):
上面就在xml配置了一个bean,并且使用set方法注入两个属性userName,salary.在程序中可以使用:
< property name ="userName" >
< value > 猪头镁镁 </ value >
</ property >
< property name ="salary" value ="95271" ></ property >
</ bean >
来获得 HelloBean, 里面的两个属性已经通过 spring 的 ioc 设置 , 可以直接使用 .
HelloBean hb = (HelloBean) ac.getBean( " HelloBean " );
在xml中,如果要注入list,map,set以及proerties对象,则可以使用以下标签:
List:
< list >
< ref local ="Student" />
< ref local ="Student" />
< ref local ="Student1" />
</ list >
</ property >
Map:
< map >
< entry >
< key >
< ref local ="Student" />
</ key >
< value > 第一个 </ value >
</ entry >
< entry >
< key >
< ref local ="Student1" />
</ key >
< value > 第二个 </ value >
</ entry >
</ map >
</ property >
Set:
< set >
< ref local ="Student" />
< ref local ="Student" />
< ref local ="Student1" />
</ set >
</ property >
Properties:
< property name ="sp" >
< props >
< prop key ="1" > 2 </ prop >
< prop key ="2" > 3 </ prop >
</ props >
</ property >
在定义 bean 标签的时候 , 还可以指定 init-method=”bean类中的某个方法名”值,他将会在bean的属性被注入以后调用,可以在里面检查值是否正确或者修改属性值.
Spring还提供了多个接口来方便使用者在bean加载完成之后(之前)来完成一系列的动作:
BeanFactoryPostProcessor:
postProcessBeanFactory:
在bean工厂工作之前调用,这里可以读取到有关xml中定义的bean的信息,如定义的bean的个数等.
BeanPostProcessor:
postProcessAfterInitialization:
在调用init-method之后调用的回调方法,方法必须返回参数中传入的经过修改的bean对象.
postProcessBeforeInitialization:
在调用init-method之前调用的回调方法,方法必须返回参数中传入的经过修改的bean对象.
PropertyEditorSupport:
setAsText等各个setAs方法:
在设置属性值之前调用,用来对值进行加工处理(比如大小写等),处理完毕以后必须调用setValue()方法把修改过的值传回去.
以上方法都只需要在xml中以普通bean的方式声明即可,spring会自动对所有bean运用。