最近看了《spring从入门到精通》看到接口注入、getter\setter、还有构造器注入不明白他们的区别和在实际项目中应用的程度、谁有这几种注入的源代码例子吗?还能解释下在项目中的应用呢?
解决方案 »
- 如何获取Tomcat的安装路径?
- 寻找做负载均衡和集群的高人
- 关于J2EE??
- 使用MyEclipse开发的JSP高手进~~
- 一道面试的概率题目
- struts 标签问题bean:define,..两天没弄出来,求各位帮忙!!
- 在struts中怎么使用动态form
- 用过Struts翻页的朋友请进。
- [紧急]resin下Mastering Jakarta Struts得employee的例子!
- entity EJB中调用EJBhome接口中remove方法和调用EJBObject中的remove方法有什么不同?
- struts2里面的struts-plugin.xml配置文件有什么用啊
- xfire+ssh 单独测试能通过 加到项目里面报错 找不到xfire.xml文件
构造方法注入,就是你提供有参的构造方法,通过参数注入//类ReCalculateIndexName有个recalculateIndexNameMap属性,提供了setter方法,注入一个map
<bean name="reCalculateIndexName"
class="com.huawei.datavoice.common.ReCalculateIndexName">
<property name="recalculateIndexNameMap">
<map>
<entry key = "index.version.defect.dts">
<value>index.version.defect.discover.suggestion.Bversion</value>
</entry>
<entry key = "index.version.defect.jira">
<value>index.version.defect.jira.total.number.critical.daily</value>
</entry>
<entry key = "index.version.demand.story">
<value>index.version.demand.jira.story.total.number.critical.daily</value>
</entry>
</map>
</property>
</bean>
//构造方法注入DefaultSpringSecurityContextSource这个类有个有参的构造方法,参数是个字符串
<bean id="contextSource"
class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
<constructor-arg value="ldap://xxxx" />
</bean>
一般在项目很少用到构造器注入,大部分都是getter/setter
三楼的解答很详细了已经,另外:
1、构造方法注入的好处是在new对象的时候,就可以得到一个完整的对象,有利于对象的完整性。另一方面,对象一旦new,由于不能提供set方法,所以该对象被注入的参数不可更改,这点即有利又有弊。
属性注入由于提供了set方法,可以在new出对象后,对要注入的值做修改。
2、当要注入的参数的数量比较多且变化较多时,不利于使用,一个原因是构造方法的参数太大,不利于维护,另一个原因是要注入的参数要发生变化时,改动量比较大,不利于扩展。属性注入正好可以解决这点。
3、日常开发使用较多的还是属性注入