`

Spring中autowire属性

阅读更多
Spring中autowire属性
default-autowire="x"
x有4个选择:byName,byType,constructor和autodetect

我感觉byName和byType用的多点

1. byName:

Service.java

public class Service
{
    Source source;

    public void setSource(Source source)
    {
        this.source = source;
    }
}


applicationContext.xml

<beans

   ...

   default-autowire="byName">
   
    <bean id="source" class="cn.hh.spring.DBCPSource" scope="prototype"/>
    <bean id="service" class="cn.hh.spring.Service" scope="prototype">
    </bean>
</beans>


cn.hh.spring.DBCPSource实现了Source接口
xml中并没有给 bean service配Source属性,但在beans中设置了autowire="byName",这样配置文件会自动根据 cn.hh.spring.Service 中的setSource找bean id="Source"的bean ,然后自动配上去,如果没找到就不装配。
注意:byName的name是java中setXxxx 的Xxxx, 和上面设置的Source source中source拼写毫无关系,完全可以是

public class Service
{
    Source source1;

    public void setSource(Source source1)
    {
        this.source1 = source1;
    }

}


结果相同。

2. byType:

Service.java同上

applicationContext.xml

<beans
   ...
   default-autowire="byType">
   
    <bean id="dbcpSource" class="cn.hh.spring.DBCPSource" scope="prototype"/>
    <bean id="service" class="cn.hh.spring.Service" scope="prototype">
    </bean>
</beans>


同样没有配置setSource,autowire改成 "byType",配置文件会找实现了Source接口的bean,这里 cn.hh.spring.DBCPSource 实现了Source接口,所以自动装配,如果没找到则不装配。
如果同个配制文件中两个bean实现了Source接口,则报错。
这里的 Type是指setSource(Source source)中参数的类型。

3. constructor:

试图在容器中寻找与需要自动装配的bean的构造函数参数一致的一个或多个bean,如果没找到则抛出异常。


4. autodetect:

首先尝试使用constructor来自动装配,然后再使用byType方式。
分享到:
评论

相关推荐

    spring-autowire-demo.zip

    如果一个bean的属性类型与Spring容器中其他bean的类型相匹配,Spring会自动将匹配的bean注入。比如,如果一个类有一个`List&lt;Database&gt;`类型的属性,Spring会查找类型为`Database`的bean,并将其注入。如果有多个...

    spring bean 属性总结

    - **autowire属性**:控制Bean的自动装配策略。有五种模式: - `no`:不自动装配,所有依赖都需手动配置。 - `byName`:根据属性名称自动装配。 - `byType`:根据属性类型自动装配。如果有多个匹配,会报错。 - ...

    spring 属性参考与自动绑定

    这意味着如果容器中存在一个类型匹配的bean,Spring会自动将其注入到相应的属性中。例如: ```xml &lt;bean id="helloBean" class="onlyfun.caterpillar.HelloBean" autowire="byType"&gt; &lt;value&gt;Hello!Justin! `...

    3Spring使用annotation方式autowire

    本篇将详细探讨"3Spring使用annotation方式autowire"这一主题,包括注解驱动的自动装配(Autowiring)以及相关的源码分析。 ### 一、注解驱动的自动装配 自动装配是Spring框架的一个核心特性,它允许框架自动管理...

    spring 的parent属性示例

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

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

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...

    (转)Spring中@Autowired注解和@Resource注解的区别

    在Spring框架中,`@Autowired`和`@Resource`注解是两个常见的依赖注入(DI, Dependency Injection)工具,它们都是用来解决组件之间的耦合问题,使得代码更加灵活和可测试。然而,这两个注解在具体使用时有一些关键性...

    多线程Autowire注入null的解决方案.docx

    在 Spring 项目中,多线程 Autowire 注入 null 的问题是一个常见的问题。当我们在多线程中使用 @Autowired 注解时,可能会出现 null 的情况。这是因为多线程是防注入的,容器中的组件不会自动注入到多线程中。 解决...

    Spring考试试卷(有答案).docx

    15. Bean的autowire属性:Spring的autowire属性可以自动装配Bean,它能够将任何Java对象和Java组件视为Bean进行管理,但不包括EJB组件。 以上内容详细解释了Spring框架中的关键概念,包括AOP、依赖注入、事务管理、...

    Spring自动装配解析

    在Spring的XML配置文件中,可以通过`&lt;beans&gt;`标签的`autowire`属性来全局设置自动装配策略,或者在单个`&lt;bean&gt;`标签中通过`autowire`属性指定某一个bean的自动装配方式。 4. 使用注解进行自动装配 Spring 2.5引入了...

    Spring.pdf

    - default:使用默认方式,可以通过在beans标签中使用default-autowire属性来配置全局的自动注入规则。 - no:不使用自动注入,使用依赖注入。 scope属性用于定义Spring bean的作用域,它决定了Spring容器创建对象...

    Spring学习笔记之二“属性注入”

    属性注入是指Spring容器通过XML配置或者基于注解的方式,将外部资源(如其他bean、数据库连接、配置信息等)设置到目标bean的属性中。这种方式降低了对象间的耦合度,使得程序更易于管理和测试。 2. **XML配置中的...

    Spring中文帮助文档

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    spring02-3

    在Spring框架中,`parent`、`abstract`和`autowire`标签是核心配置中不可或缺的部分,它们各自承担着不同的职责,对于理解和优化Spring应用的依赖管理至关重要。接下来,我们将详细探讨这三个概念及其在实际开发中的...

    autowire自动导入句柄

    在Spring框架中,`autowire`是一种自动装配bean依赖的方式,它极大地简化了bean之间的依赖注入过程。本文将深入探讨`autowire`自动导入句柄及其在实际开发中的应用。 ### 1. `autowire`简介 `autowire`是Spring...

    Spring中自动装配的4种方式

    byName 自动装配是指通过设置 property 标签的 autowire 属性为 byName,Spring 将自动寻找一个与该属性名称相同或 id 相同的 Bean,注入进来。例如: ```xml &lt;property name="dataSource" autowire="by...

    4.Spring应用扩展.pptx

    例如,可以将数据库连接信息写入属性文件,如`database.properties`,然后在Spring配置文件中使用`PropertyPlaceholderConfigurer`引入属性文件。这样,我们就可以在XML配置中使用`${...}`的方式来引用属性值,如`${...

    Spring中XML配置文件的十二个最佳方法.doc

    简洁形式是Spring从1.2版本开始引入的,它将属性值和引用直接写入bean定义的属性中,减少XML的冗余。例如,将`&lt;property&gt;`和`&lt;constructor-arg&gt;`的子元素替换为相应的属性,使得配置更紧凑,如`...

    Spring考试试卷 (2).docx

    EJB组件在Spring中也可以被管理,但不是autowire属性的一部分,D选项错误。 总结:Spring框架的核心特性包括依赖注入、面向切面编程和事务管理。依赖注入通过配置管理组件间的关系,降低耦合度;AOP用于处理横切...

    Spring--2.Spring 中的 Bean 配置-2-1

    本节我们将深入探讨Spring中的Bean配置,主要聚焦在XML配置方式,因为这是Spring早期版本中最常用的方式,尽管在现代Spring应用中,Java配置和注解配置变得更为常见。 1. **Bean定义**: - 在Spring中,一个Bean...

Global site tag (gtag.js) - Google Analytics