欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

依赖注入(DI)

程序员文章站 2022-07-15 10:23:40
...

依赖注入(DI)

1.概念

  • 依赖注入(Dependency Injection,DI)。

  • 依赖 : 指Bean对象的创建依赖于容器 . Bean对象的依赖资源 .

  • 注入 : 指Bean对象所依赖的资源 , 由容器来设置和装配 .

2.set注入(重点)

要求被注入的属性 , 必须有set方法 , set方法的方法名由set + 属性首字母大写 , 如果属性是boolean类型 , 没有set方法 , 是 is .

测试pojo类 :
address.java

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Address {
    private String address;
}

Student.java

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private String name;
    private Address address;
    private String[] books;
    private List<String> hobbys;
    private Map<String,String> card;
    private Set<String> games;
    private String wife;
    private Properties info;
}

2.1 常量注入

  <bean id="student" class="com.ming03.pojo.Student">
        <property name="name" value="小梦"/>

2.2 bean注入

 <bean id="addr" class="com.kuang.pojo.Address">
    <property name="address" value="重庆"/>
</bean>

<bean id="student" class="com.kuang.pojo.Student">
    <property name="name" value="小明"/>
    
    <--注意点:这里的值是一个引用,ref-->
   <property name="address" ref="addr"/>
</bean>

2.2 数组注入

  <property name="books">
           <array>
               <value>活着</value>
               <value>兄弟</value>
               <value>java开发</value>
           </array>
       </property>

2.3 List 注入

<property name="hobbys">
         <list>
             <value>听歌</value>
             <value>看电影</value>
             <value>爬山</value>
         </list>
     </property>

2.4 Map注入

<property name="card">
          <map>
              <entry key="中国邮政" value="555"/>
              <entry key="中国移动" value="10086"/>
          </map>
      </property>

2.5 set注入

 <property name="games">
         <set>
             <value>lol</value>
             <value>吃鸡</value>
             <value>王者荣耀</value>
         </set>
     </property>

2.6 Null注入

 <property name="wife"><null/></property>

2.7 Properties注入

 <property name="info">
            <props>
                <prop key="root">root</prop>
                <prop key="password">123456</prop>
            </props>
        </property>

测试:

    @Test
    public void myText(){
     ApplicationContext context = new ClassPathXmlApplicationContext("beans03.xml");
         Student student = (Student) context.getBean("student");
        System.out.println(student);
    }
相关标签: Spring 5 spring 5