zoukankan      html  css  js  c++  java
  • Spring 基于构造函数的依赖注入

    基于构造函数依赖注入

    sprig通过bean创建对象时,会通过bean提供的参数来选择调用某个构造函数。上例中, <constructor-arg ref="spellChecker"/>  就是一个构造函数的参数,参数值是下方的一个bean。

    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    
       <!-- Definition for textEditor bean -->
       <bean id="textEditor" class="com.tutorialspoint.TextEditor">
          <constructor-arg ref="spellChecker"/>
       </bean>
    
       <!-- Definition for spellChecker bean -->
       <bean id="spellChecker" class="com.tutorialspoint.SpellChecker">
       </bean>
    
    </beans>

    当有多个参数的时候,按照顺序来注入参数就可以了。

    package x.y;
    public class Foo {
       public Foo(Bar bar, Baz baz) {
          // ...
       }
    }
    <beans>
       <bean id="foo" class="x.y.Foo">
          <constructor-arg ref="bar"/>
          <constructor-arg ref="baz"/>
       </bean>
    
       <bean id="bar" class="x.y.Bar"/>
       <bean id="baz" class="x.y.Baz"/>
    </beans>

    有其他的基本数据类型的话可以采用下方的方式:

    1.使用type来说明数据类型,value来注入数值

    package x.y;
    public class Foo {
       public Foo(int year, String name) {
          // ...
       }
    }
    <beans>
    
       <bean id="exampleBean" class="examples.ExampleBean">
          <constructor-arg type="int" value="2001"/>
          <constructor-arg type="java.lang.String" value="Zara"/>
       </bean>
    
    </beans>

    2.通过index索引来注入也可以

    <beans>
    
       <bean id="exampleBean" class="examples.ExampleBean">
          <constructor-arg index="0" value="2001"/>
          <constructor-arg index="1" value="Zara"/>
       </bean>
    
    </beans>

    注意!!!如果你想要向一个对象传递一个引用,你需要使用 标签的 ref 属性,如果你想要直接传递值,那么你应该使用如上所示的 value 属性。

  • 相关阅读:
    Learning Intents behind Interactions with Knowledge Graph for Recommendation
    php_network_getaddresses: getaddrinfo failed: Name or service not known
    下载低版本Xcode方法
    世界奇妙周刊 第2期
    倒计时 | 7.24 阿里云 Serverless Developer Meetup 杭州站报名火热进行中!
    《网镜》001.生成word勘验报告
    java 常用集合使用方法
    Excel 常用操作
    《世界上最简单的会计书》
    mysql 通过坐标换算距离
  • 原文地址:https://www.cnblogs.com/qie-zi/p/8795245.html
Copyright © 2011-2022 走看看