zoukankan      html  css  js  c++  java
  • 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进行设置。

  • 相关阅读:
    [Unity UGUI]ScrollRect效果大全
    Lua元表
    [译]使用AssetBundle Manader
    [Unity 设计模式]桥接模式(BridgePattern)
    [Unity 设计模式]IOC依赖倒置
    基于Shader实现的UGUI描边解决方案
    UGUI实现不规则区域点击响应
    使用消息分发机制降低程序中的耦合度
    使用IDA静态分析解密《舰娘Collection》的lua脚本
    定制自己的Unity脚本模板
  • 原文地址:https://www.cnblogs.com/yuby/p/10904456.html
Copyright © 2011-2022 走看看