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在以后的某个时候还可以重新实例配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值