美文网首页
10、Spring- XML-依赖注入

10、Spring- XML-依赖注入

作者: 唯老 | 来源:发表于2019-09-18 00:14 被阅读0次

一、概要

XML配置文件中,在bean的定义中可配置该bean的依赖项,通常使用的配置方式有2种

  • 构造函数注入
  • Setter方法注入

二、构造函数注入

说明

constructor-arg 属性,根据XML中的配置,Spring容器首先创建所依赖Bean实例,然后传递给类的构造函数。通过指定构造方法的参数来实例化Bean 。

可选属性

属性 说明
type 根据参数的类型,避免构造方法冲突
value 用于指定字符串类型、基本类型的属性值
name 属性的名称
ref 关联其它类型
index 对应于构造函数的多个参数,index属性的值从0开始

栗子

public class Shop {
    private ShopDetail detail;
    private int shopId;
    private String title;
    private String name;
    public Shop() {
    }
    // 构造方法传入 ShopDetail detail
    public Shop(ShopDetail detail) {
      this.detail = detail
    }
    public Shop(int shopId, String title) {
        this.shopId = shopId;
        this.title = title;
    }
    public Shop(String title, String name) {
        this.title = title;
        this.name = name;
    }
    public Shop(int shopId, String title, String name) {
        this.shopId = shopId;
        this.title = title;
        this.name = name;
    }
    public int getShopId() {
        return shopId;
    }
    public void setShopId(int shopId) {
        this.shopId = shopId;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "Shop{" +
                "shopId=" + shopId +
                ", title='" + title + '\'' +
                ", name='" + name + '\'' +
                '}';
    }
}
<bean id="shop" class="com.wener.example.bean.Shop">
    <!--通过构造方法注入-->
    <constructor-arg type="int" value="1"/>
    <constructor-arg type="java.lang.String" value="iPhone X"/>
</bean>
<!-- 或者 -->
<bean id="shop" class="com.wener.example.bean.Shop">
    <!--通过构造方法注入-->
   <constructor-arg index="0" value="1"/>
   <constructor-arg index='title' value="手机"/>
   <constructor-arg index='2' value="iPhone X"/>
</bean>
<!--或者-->
<bean id="shop" class="com.wener.example.bean.Shop">
    <!--通过构造方法注入-->
   <constructor-arg name="id" value="1"/>
   <constructor-arg index='1' value="手机"/>
   <constructor-arg index='name' value="iPhone X"/>
</bean>
ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
Shop shop = context.getBean("shop", Shop.class);
System.out.println(shop.toString());

三、Setter方法注入

说明

property属性,根据XML中的配置,Spring容器调用类的Setter方法注入依赖项。

可选属性

属性 说明
name 属性的名称
value 主要是配置基本类型的属性值,
ref 但是如果我们需要为Bean设置属性值是另一个Bean实例时,这个时候需要使用<ref.../>元素。使用<ref.../>元素可以指定如下两个属性。bean:引用不在同一份XML配置文件中的其他Bean实例的id属性值。local:引用同一份XML配置文件中的其他Bean实例的id属性值

栗子

public class Shop {
    private ShopDetail detail;
    public void setDetail(ShopDetail detail) {
        this.detail = detail;
    }
    public ShopDetail getDetail() {
        return detail;
    }
}
public class ShopDetail {
    private String desc;
    public String getDesc() {
        return desc;
    }
    public void setDesc(String desc) {
        this.desc = desc;
    }
}
<bean id="shop" class="com.wener.example.bean.Shop">
      <property name="detail" ref="detail"/>
</bean>
<bean id="detail" class="com.wener.example.bean.ShopDetail"></bean>

Spring容器根据name调用setter方法:name对应“set”关键字后面的属性名,name="detail"对应于setDetail。

相关文章

  • 10、Spring- XML-依赖注入

    一、概要 XML配置文件中,在bean的定义中可配置该bean的依赖项,通常使用的配置方式有2种 构造函数注入 S...

  • Spring-依赖注入、切面

    【064 什么是Spring?】 Spring本质上是一个轻量级开发框架,包含的内容非常多,最核心的实际上是IOC...

  • Spring-注解依赖注入

    一、概要 自动装配是指Spring 在装配 Bean 的时候,根据指定的自动装配规则,将某个 Bean 所需要引用...

  • Spring-依赖注入(DI)

    概念 依赖注入(Dependency Injection,DI) 依赖:指Bean对象的创建依赖于容器。Bean对...

  • 三 Spring-依赖注入概要(IOC)

    目录 1. Web MVC发展史历程2.Spring概要3.Spring-依赖注入概要(IOC)4.属性注入的三种...

  • Java Spring-泛型依赖注入

    泛型依赖注入:Spring 4.x中可以为子类注入子类对应的泛型类型的成员变量的引用

  • 开源项目的依赖注入

    开源项目的依赖注入 依赖注入概念 依赖注入(DI:Dependency Injection): 依赖注入方式: B...

  • 资料收集

    依赖注入 AngularJs依赖注入的研究 (已读) 依赖注入(已读)

  • Dagger2常用注解诠释

    依赖注入 控制反转(IoC)与依赖注入(DI)浅谈依赖注入理解依赖注入(IOC)和学习Unity Gradle配置...

  • Day62 Spring 依赖注入源码解析

    手动注入自动注入 依赖注入,set注入,构造注入 依赖注入: Key依据 byType byName constr...

网友评论

      本文标题:10、Spring- XML-依赖注入

      本文链接:https://www.haomeiwen.com/subject/axtzyctx.html