• spring自动装配


    spring可以使用 XML 配置文件中的<constructor-arg><property>元素来注入 ,也可以通过<bean>元素中的autowire来自动装配(自动注入)

    <bean id="***" class="***" autowire=""></bean>

    共有下面四种情况:

    1.byName:由属性名自动装配。Spring 容器看到在 XML 配置文件中 bean 的自动装配的属性设置为 byName。然后尝试匹配,并且将它的属性与在配置文件中被定义为相同名称的 beans 的属性进行连接,没有相同名称的什么都不做。

    2.byType:由属性数据类型自动装配。Spring 容器看到在 XML 配置文件中 bean 的自动装配的属性设置为 byType。然后如果它的类型匹配配置文件中的一个确切的 bean 名称,它将尝试匹配和连接属性的类型。如果存在不止一个这样的 bean,则一个致命的异常将会被抛出,没有相同类型的什么都不做。(如果存在多个相同类型的Bean候选项,可以通过设置其中几个Bean为autowire-candidate="false",来设置自动装配时忽略这几个bean,也可以设置primary=“true”来设置当前bean作为自动装备的值,直接忽略其他项,这个属性不对byName有效,也就是说如果是通过byName自动装配,依然可以找到当前Bean并自动装配)

    3.constructor:类似于 byType,但该类型适用于构造函数参数类型。如果在容器中没有一个构造函数参数类型的 bean,则一个致命错误将会发生(工作过程首先根据bean的name查找(类似于byName),此时如果找到和构造参数中相同名称的bean就注入,可以有多个相同类型的bean;否则就根据byType模式查找,此时如果有多个相同类型的bean就会报错,可以通过设置autowire-candidate="false"或primary=“true”来避免,最后还是没有找到就会报错)。如果Bean的自动装配模式为constructor,而候选bean的primary=“true”,那么将直接注入这个bean,如果候选bean同时设置为primary=“true”和autowire-candidate="false",这个bean将不会作为自动装配候选项,不能由多个自动装配候选项设置为primary=“true”。

    4.no:默认模式,不自动装配,需要通过<constructor-arg><property>来手动注入。

    <property>和<constructor-arg>将会覆盖上面这些配置。子bean也不会继承上面这些配置,但是内部bean将继承外部bean的配置

    也可以在<Beans>中通过default-autowire进行设置。

  • 相关阅读:
    Socket 端口网络监听
    java android 将小数度数转换为度分秒格式
    android popupwindow 位置显示
    【转】习大大的“黄土情结”:中国要富,农民必须富
    【转】中央农村工作会议首次提出人的新农村
    【转】【CDC翻客】移动端App测试实用指南
    【转】测试,人人都是产品经理之测试产品的选择和创造
    【转】易用性测试
    【转】功能测试的经验总结
    【转】在做性能测试之前需要知道什么
  • 原文地址:https://www.cnblogs.com/yuby/p/10904456.html
Copyright © 2020-2023  润新知