- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 构造注入与Set注入比较 构造注入的优点 构造注入提供了强制依赖,如果某些属性没有注入,bean将无法被实例化 bean的更加简洁,因为bean的属性通过构造方法注入,而无需为bean的属性提供set方法 因为只有通过构造方法才能设置bean的属性可以保证bean的属性不变性 构造注入的缺点 如果bean的属性非常多,势必造成构造方法的参数会很长 如果一个bean有已有多个构造方法,那么很难再提出不同的构造方法,因为只能通过构造方法的参数来区分不同的构造方法 如果一个构造参数有两个类型相同的参数,很难确定他们的用途 另外构造函数注入不利于类的继承 一个好的尺度是对于那些必需的属性可使用构造注入,而对于非必需的属性可考虑使用set注入。 * 使用@Required 使用Set注入时在Spring2.0之前不能强制注入,在Spring2.0中可使用@Required注解强制注入属性值,若运行时未注入值,Spring将抛出异常提示。 private UserDao userDao = null; @Required //强制注入 public void setUserDao(UserDao userDao) { this.userDao = userDao; } * 自动注入 如果设置Bean为自动注入,Spring构建Bean实例后,会自动设置Bean的属性值。 自动注入的方式有: byName,根据属性的名称自动从容器中寻找与之匹配的bean的定义进行装配。 byType,根据属性的类型自动从容器中寻找与之匹配的bean的定义进行装配。 constructor,用于构造函数自动装配,从容器中查找与构造参数类型一致的bean进行自动装配。 autodetect,首先使用constructor装配,再使用byType进行装配。 * 自动注入示例 自动装配也可以与显式的声明装配配合使用 public class OrderSrv { private OrderDao orderDao; private CustomerDao cusDao; public OrderDao getOrderDao() { return orderDao; } public void setOrderDao(OrderDao orderDao) { this.orderDao = orderDao; } public CustomerDao getCusDao() { return cusDao; } public void setCusDao(CustomerDao cusDao) { this.cusDao = cusDao; } } * 自动注入示例 自动装配也可以与显式的声明装配配合使用 bean id=orderDao class=com.OrderDao /bean bean id=cusDao class=com.CustomerDao /bean bean id=orderSrv class=com.OrderSrv autowire=byName property name=orderDao ref=orderDao/property /bean 此处orderDao属性使了显示的Set注入,而cusDao将被容器自动注入到orderSrv。 * Bean的继承 Spring中充许一个Bean继承另一个Bean的配置 bean id=daoBase class=dao.DaoBase abstract=true property name=“ds” ref=“dataSource”/ /bean bean id=productDao class=dao.ProductDao parent=daoBase /bean 注:标注为abstract=“true”的Bean是不会被实例化的。 * 使用自定义配置参数 Spring中Bean的固定属性值不仅可以通过value元素注入,也可以通过属性文件指定。 使用属性文件可以将重要的配置信息放在独立的文件中,例如数据库的帐号和密码。 Spring提供了PropertyPlaceholderConfigurer通知容器如何加载属性文件。 bean id=porpertyLoder class=org.springframework.beans.factory.config.PropertyPlaceholderConfigurer property name=location valueperties/value//指定了配置文件的类路径 /property /bean * 使用自定义配置参数 示例中使用属性文件中的配置,配置对象的属性。 bean id=dat
文档评论(0)