读书人

Spring之bean流入方式

发布时间: 2012-10-06 17:34:01 作者: rapoo

Spring之bean注入方式

?? 关于bean的注入方法,spring提供了三种方法:

?? 1.构造函数注入

?? 2.setter注入

?? 3.方法注入(省略)

?? 在一般情况下使用前两种方式。基于构造器的DI通过调用带参数的构造器来实现,每个参数代表一个依赖。此外还可以通过给stiatic工厂方法传参数来构造bean。

?? 对应的Class代码:

??public class LayerData ?

{

??private YYHYGenericData dataService;

??private List<Object> RecordList = new ArrayList<Object>();

??public List<Object> getRecordList()?

?{

return RecordList;

?}

??public LayerData(String LayerName,YYHYGenericData dbservice,String SQL )

??{

?this.dataService=dbservice;

?System.out.println("图层:"+LayerName+"开始加载缓存");

? ?RecordList= dataService.getAll( SQL);

?

??}

?

?

}

?

??对应的bean配置:

?

??<bean id="outcrop"

?class="com.yyhy.Webgis.WFSLayer.LayerData">

<constructor-arg index="0">

<value>outcrop</value>

</constructor-arg>

<constructor-arg index="1">

<ref bean="YYHYGenericData"/>

</constructor-arg>

<constructor-arg index="2">

<value>select id,name,objlevel,objtype,the_geom,fontangle,fontcolor,fonttransparence,objdataprecision,fontsize,centerpoint_51000 as centerpoint,enddate,begindate,fillsymbolstyle,filltransparence,wkt_51000 ?as WKT from outcrop where wkt_51000 is not null</value>

</constructor-arg>

</bean>

?

??这种方式是直接通过传入构造函数参数值的方式注入的,多个参数之间通过 index属性进行区别。

?

?? ? <bean id="YyhytablesnamedicDAOBean"

?class="com.yyhy.Baseclass.db.YYHYGenericManagerImpl">

<constructor-arg>

<bean class="com.yyhy.Baseclass.db.YYHYGenericDaoHibernate">

<constructor-arg value="com.yyhy.hx.tablesinformation.Yyhytablesnamedic"/>

<property name="sessionFactory"

?ref="sessionFactory"/>

?? ? </bean>

?? ? 这是一个嵌套配置构造函数的bean,类YYHYGenericManagerImpl的构造函数参数是bean对象,而这个bean对象所对应的class的构造函数则需要一个bean 的reference来注入。

?

?? ? setter注入方式:

?? ? <bean id="YyhytablesnamedicDAOBean"

?class="com.yyhy.Baseclass.db.YYHYGenericManagerImpl">

?? ? ? ? <property name="*DAO"?

?? ? ? ? ? ? ? ? ? ref="BeanDAO">

?? ?</bean> ?

?? ?其中的seeter注入可是value的值类型,也可以是上面的引用类型。

?

?? ?是构造函数注入还是setter注入?

?? ?由于大量的构造器函数可能使程序变得笨拙,特别是当某些属性是可选的时候,因此通常情况下,提倡使用setter注入。而且setter DI在以后的某个时候还可以重新实例配置。

读书人网 >软件架构设计

热点推荐