`
zgzd13575java
  • 浏览: 13806 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

autowire属性

阅读更多
采用的是Spring2.0的xml,在这里,IOC控制反转,我只探讨autowire的四个比较常用的属性

一:系统默认的autiwire="no"

<bean id="show" class="com.zgz008.web.ShowListBean" autowire="no" >  
<property name="showService">
<ref bean="showService"></ref>
</property>
</bean>

proprtty name属性指的是com.zgz008.web.ShowListBean内部反射成set方法生成的,并不是说一定是属性名showService
ref bean指的就是我们的id号啦

二: autowire="byName"


<bean id="show" class="com.zgz008.web.ShowListBean" autowire="byName" />

自动根据applicationContext.xml里面的bean id属性反射成set方法,去查询com.zgz008.web.ShowListBean有没有拥有这个方法
有的话就自动依赖注入

三:autowire="byType"


<bean id="show" class="com.zgz008.web.ShowListBean" autowire="byType" />

只要com.zgz008.web.ShowListBean有一个属性与Spring容器中的属性相匹配,那么就会自动装载进来,调用的是set方法(不用管属性名)

四:autowire="constructor"


<bean id="show" class="com.zgz008.web.ShowListBean" autowire="constructor" >
<constructor-arg index="0" type="com.zgz008.service.IShowService"">
      <ref bean="showServiceOK" />
</constructor-arg>
</bean>

使用的是构造器注入,ref bean指的是id号,只要类型匹配就会自动注入,(不用管属性名)



总的来说,只要你命名规范符合标准,应该不会有什么大问题的

以下内容转载

no 不使用自动装配。必须通过ref元素指定依赖,这是默认设置。由于显式指定协作者可以使配置更灵活、更清晰,因此对于较大的部署配置,推荐采用该设置。而且在某种程度上,它也是系统架构的一种文档形式。

byName 根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配。例如,在bean定义中将autowire设置为by name,而该bean包含master属性(同时提供setMaster(..)方法),Spring就会查找名为master的bean定义,并用它来装配给master属性。

byType 如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配。如果存在多个该类型的bean,那么将会抛出异常,并指出不能使用byType方式进行自动装配。若没有找到相匹配的bean,则什么事都不发生,属性也不会被设置。如果你不希望这样,那么可以通过设置dependency-check="objects"让Spring抛出异常。 网管论坛bbs_bitsCN_com

constructor 与byType的方式类似,不同之处在于它应用于构造器参数。如果在容器中没有找到与构造器参数类型一致的bean,那么将会抛出异常。

autodetect 通过bean类的自省机制(introspection)来决定是使用constructor还是byType方式进行自动装配。如果发现默认的构造器,那么将使用byType方式。
分享到:
评论

相关推荐

    Jimmy-Ma#SpringDemo#004.自动装配(XML)1

    使用autowire属性指定自动装配的方式byName根据bean的名字和当前bean的setter风格属性名进行自动装配若有匹配,则自动转配若无匹配,则不装配

    Struts2属性文件详解

    struts.objectFactory.spring.autoWire 指定Spring框架的自动装配模式, 该属性的默认值是name, 即默认根据Bean的name属性自动装配. struts.objectFactory.spring.useClassCache 该属性指定整合Spring框架时,是否...

    spring 的parent属性示例

    spring框架中bean标签parent属性的各类使用范例 总计12个范例,涵盖了class、init-method、 factory-method、lazy-init、 depends-on、autowire 多种属性的组合使用

    spring源码15: 属性填充

    本篇我们将介绍前三种,@Autowire应该是百分之99的开发者选择的的注入方式,它通过属性填充中的后置处理器完成,因此本篇有涉及后置处理器的不用太纠结,将单独一片详解:spring源码16: @Autowired实现原理 ...

    autowire-开源

    一个以直接和简单的方式将 xml 解析为 java 对象的库:您只需创建您的 java bean 并连接它。 没有 JAXB,没有模式。 使用您的 bean 属性作为标记名称。

    spring2.5学习PPT 传智博客

    13.@Autowire注解与自动装配 14.让Spring自动扫描和管理Bean 15.使用JDK中的Proxy技术实现AOP功能 16.使用CGLIB实现AOP功能与AOP概念解释 17.使用Spring的注解方式实现AOP入门 18.使用Spring的注解方式实现AOP...

    spring学习过程

    spring基础,主要讲解了 spring的autowire:自动装配 collections:属性配置的细节 properties:外部属性文件的使用 relati:bean之间的关系 scope:bean的作用域 spel:spel的使用

    spring4示例代码

    以及bean的autowire和继承与依赖,以及bean的作用域。 spring-2 演示了外部配置文件的引入(connection),spel(spring el)表达式 ,静态工厂方式及实例工厂方式及factorybean方式创建bean, spring的生命周期及...

    mockitobeans

    它不会注入依赖项@Autowire默认情况下将其注释属性“ required”设置为“ true”。 这是一个巨大的痛苦,尤其是当您只想在测试的12个依赖项中注入2个时解决方案将模拟物添加为Bean @Configuration@MockedBeans ( ...

    详解SpringBoot 多线程处理任务 无法@Autowired注入bean问题解决

    主要介绍了详解SpringBoot 多线程处理任务 无法@Autowired注入bean问题解决,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Struts课堂笔记.rar--struts2的struts.properties配置文件详解

    加载附加的国际化属性文件(不包含.properties后缀) struts.custom.properties Location of additional configuration properties files to load 加载附加的配置文件的位置 struts.devMode Whether Struts ...

    Spring中文帮助文档

    3.3.5. 自动装配(autowire)协作者 3.3.6. 依赖检查 3.3.7. 方法注入 3.4. Bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. Singleton beans和prototype-bean的依赖 3.4.4. 其他作用域 ...

    Spring API

    3.3.5. 自动装配(autowire)协作者 3.3.6. 依赖检查 3.3.7. 方法注入 3.4. Bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. Singleton beans和prototype-bean的依赖 3.4.4. 其他作用域 ...

    spring chm文档

    3.3.6. 自动装配(autowire)协作者 3.3.7. 依赖检查 3.3.8. 方法注入 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. 其他作用域 3.4.4. 自定义作用域 3.5. 定制bean特性 3.5.1...

    Spring的学习笔记

    五、 简单属性的注入 11 六、 Bean的作用范围scope 12 七、 集合注入 12 八、 自动装配autowire 13 (一) byName 13 (二) byType 14 (三) 注意 14 九、 生命周期 15 (一) lazy-init/default-lazy-init 15 (二) init-...

    spring2.5 学习笔记

    五、 简单属性的注入 11 六、 Bean的作用范围scope 12 七、 集合注入 12 八、 自动装配autowire 13 (一) byName 13 (二) byType 14 (三) 注意 14 九、 生命周期 15 (一) lazy-init/default-lazy-init 15 (二) init-...

    维生药业小项目 SSH简单学习项目

    default-lazy-init="false" default-autowire="byName"&gt; &lt;property name="driverClass" value="com.mysql.jdbc.Driver"&gt;&lt;/property&gt; ...

    Spring 2.0 开发参考手册

    3.3.6. 自动装配(autowire)协作者 3.3.7. 依赖检查 3.3.8. 方法注入 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. 其他作用域 3.4.4. 自定义作用域 3.5. 定制bean特性 3.5.1...

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

    3.3.6. 自动装配(autowire)协作者 3.3.6.1. 设置Bean使自动装配失效 3.3.7. 依赖检查 3.3.8. 方法注入 3.3.8.1. Lookup方法注入 3.3.8.2. 自定义方法的替代方案 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. ...

Global site tag (gtag.js) - Google Analytics