• 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 属性。

  • 相关阅读:
    MySQL事务隔离级别和MVCC
    windows环境下查看端口是否被占用
    jar找不到问题解决
    Java注解
    Fastjson
    mybatis
    Idea快捷键
    Date与String的相互转换
    Windows快捷键
    [转]linux awk命令详解
  • 原文地址:https://www.cnblogs.com/qie-zi/p/8795245.html
Copyright © 2020-2023  润新知