`
flm_llx
  • 浏览: 60341 次
  • 性别: Icon_minigender_1
  • 来自: 应县
社区版块
存档分类
最新评论

spring:简单的属性参考

    博客分类:
  • java
阅读更多
在定义文件(XML配置文件)中定义Bean时,可以直接指定一个字符串值给属性值,如果在Bean定义文件中已经有一个定义的Bean实例,则可以直接让某个属性参考至这个实例。

有以下几种比较常用的方式:

1.使用<ref>直接指定参考至其他的Bean实例
2.使用<bean>标签并指定"class"属性来指定依赖对象
3.隐式自动绑定,分别是byType,byName将某个Bean实例绑定至其他Bean对应的属性
4.在构造方法上也能进行自动绑定
5.也可以设定"autodetect",一切交给Spring判定,自动完成。

以上几种注入方式注意事项如下:

1. <ref>方式:

    <ref bean="XXX"/>,XXX填写的字符需是你要依赖的bean文件中的id名字,有些书上也叫Bean别名。如<bean id="XXX" class="YYYY"/>


2. <bean>方式:

    前提条件必须是,这个Bean的实例只被某个属性参考一次,之后在定义文件中不再被其它Bean的属性所参考,那么可以直接在属性定义时使用<bean>标签,并仅需指定其"class"属性即可,如:
...
<property name="zzz">
    <bean class="Xxx.Yyy.Zzz">
</property>
...
    Spring的IoC容器会自动生成Zzz实例,并透过setZzz()方法将Zzz实例设定给需要实现的Bean。


3.1 byType方式:

    在需要实现的Bean中,在<bean id="..." class="..." autowire="byType"> ,无需再指定属性参考而编写一个property,Spring会根据需要实现的Bean的setZzz()方法所接受的类型,来判断在Bean定义文件中是否定义有类似的类型对象,并将之设定给需要实现的Bean的setZzz()。使用自动绑定时,如果"byType"无法完成绑定,则抛出 org.springframework.beans.factory.Unsatisfied-DependencyException的异常。


3.2 byName方式:

    使用byName方式,类似的在<bean id="..." class="..." autowire="byName"> ,但是需要注意的是Spring要根据Bean定义时的"id"属性上指定的别名与Setter名称是否一致来进行自动绑定。如setDate()方法来完成依赖注入,必须修改一下需要注入的Bean的id值为"date"名称,即名字要相同。如果使用"byName"无法完成自动绑定,则对应的Setter仅维持未绑定状态。


4. constructor方法

    在构造方法上也可以尝试进行自动绑定。本人不是很推荐使用,因为这样很容易产生混乱,一边使用Type 3 Dependency Injection一边使用Type 2 Dependency Injection,使代码易读性下降不利于代码维护。有兴趣的朋友可以翻阅相关资料尝试。


5.autodetect方法

    类似第3方法,<bean id="..." class="..." autowire="autodetect"> ,这时候Spring会尝试使用如"autowire"被设定为"constructor"来处理依赖关系的建立,如果没有完成依赖关系建立,则再尝试使用如"autowire"被设定为"byType"的方式来建立依赖关系。这是比较傻瓜的一种自动检测方式,虽然方便但是不推荐使用,因为也是容易降低代码的可读性。




相关

    Spring自带一种依赖关系检测机制,由于很难从定义文件中看清楚是否每个属性都完成了设定,为了确定某些依赖关系确实建立,可以加入依赖检测,在<bean>标签使用时添加dependency-check="xxx",有四种检测方式:"simple"、"objects"、"all"、"none"。

    "simple":只检查简单的属性是否完成依赖关系,如原生数据类型或字符串对象
    "objects":检查对象类型的属性是否完成依赖关系
    "all":检查全部的属性是否完成依赖关系
    "none":默认值,不检查依赖关系

使用自动绑定时加入以来检测,如有未完成的依赖关系,则执行程序抛出 org.springframework.beans.factory.UnsatisfiedDependencyException异常。 

分享到:
评论

相关推荐

    spring 属性参考与自动绑定

    spring 属性参考与自动绑定.txt

    Springframework开发参考手册chm格式

     Spring Framework 开发手册 chm,一份对Spring特性的参考指南,内容涵盖Spring概述、使用场景、Spring2.0新特性、面向切面编程、中间层、WEB层、校验,数据绑定,BeanWrapper,与属性编辑器、使用Spring进行面向...

    SpringMongodb参考文档.docx

    1.了解Spring 2.了解NoSQL和文档数据库 3.要求 4.其他帮助资源 4.1。支持 4.1.1。社区论坛 4.1.2。专业支持 ...Spring Data MongoDB 2.1中的新...属性表达式 7.4.4。特殊参数处理 7.4.5。限制查询结果 7.4.6。流式查询结果

    spring security 参考手册中文版

    Spring Security 参考 1 第一部分前言 15 1.入门 16 2.介绍 17 2.1什么是Spring Security? 17 2.2历史 19 2.3版本编号 20 2.4获得Spring安全 21 2.4.1使用Maven 21 Maven仓库 21 Spring框架 22 2.4.2 Gradle 23 ...

    springMongodb参考文档中文版

    属性表达式 7.4.4。特殊参数处理 7.4.5。限制查询结果 7.4.6。流式查询结果 7.4.7。异步查询结果 7.5。创建存储库实例 7.5.1。XML配置 7.5.2。JavaConfig 7.5.3。独立使用 7.6。Spring Data存储库的自定义实现 7.6.1...

    Spring boot工具类静态属性注入及多环境配置详解

    主要为大家详细介绍了Spring boot工具类静态属性注入,及多环境配置详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Spring 2.0 开发参考手册

    5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. Spring的AOP代理 6.2. @...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的...

    Spring Boot自定义配置属性源(PropertySource)

    主要介绍了Spring Boot自定义配置属性源(PropertySource),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    开源框架 Spring Gossip

    第一个 Spring 程式 BeanFactory、 ApplicationContext Type 2 IoC、Type 3 IoC 属性参考 自动绑定 集合物件注入 Bean 的生命周期 Bean 进阶管理 理想上对于 Bean 来说,它不...

    spring-mvc序列化json动态擦除属性[参考].pdf

    spring-mvc序列化json动态擦除属性[参考].pdf

    tiny-spring:一个很小的IoC容器指的是Spring

    我尝试从使用功能的角度出发,参考Spring的实现,一步一步构建,最终完成一个精简版的Spring。有人把程序员与画家做比较,画家有门基本功叫临摹,tiny-spring可以算是一个程序的临摹版本-从自己的需求出发,进行程序...

    spring3.1中文参考文档

    spring3.1中文参考文档,南磊翻译,现在有4章,目录如下: 第一部分 Spring framework概述.......................................................................................................................

    spring mvc 3.2 参考文档

    因此你不需要简单的重复拷贝您的业务对象的属性,表单对象中的非类型化的字符串只是处理无效的提交,或者合理的转换字符串。相反,直接绑定的方式更可取。 Spring的视图解析也非常灵活,控制器通常负责准备含有数据...

    spring.net中文手册在线版

    Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序。它提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。Spring.NET以Java版的Spring框架为...

    Spring boot将配置属性注入到bean类中

    本篇文章主要介绍了Spring boot将配置属性注入到bean类中,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    spring各种邮件发送

    它包括了发送电子邮件的主要接口MailSender,和值对象SimpleMailMessage,它封装了简单邮件的属性如from, to,cc, subject,text。 包里还包含一棵以MailException为根的checked Exception继承树,它们提供了对底层...

    Spring读取配置文件属性实现方法

    主要介绍了Spring读取配置文件属性实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Spring API

    5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. AOP代理 6.2. @AspectJ支持 ...

    spring使用属性文件

    这是参考文件 博文链接:https://yan578351314.iteye.com/blog/961327

Global site tag (gtag.js) - Google Analytics