Spring 基础篇(六) 基于xml 的显示配置

本文介绍如何在Spring框架中使用XML进行Bean的装配,包括通过构造器注入、属性setter注入、集合注入等方式初始化Bean,以及如何在XML配置文件中引用JavaConfig。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过XMl 装配Bean

声明一个简单的bean

要在基于xml的Spring 配置中声明一个bean,需要使用 标签。bean 标签类似于JavaConfig 中的@Bean注解。

<bean id="compactDisc" class="Bean.AutoBean.SgtPeppers"></bean>

这里声明了一个简单的bean,创建这个bean的类通过class 属性来指定,并且要使用全限定的类名。

通过id 可以为bean 设置名字。

借助构造器注入初始化bean

在Spring XML配置中,只有一种声明bean的方式;使用bean 标签并指定class 属性。Spring 会从这里获取必要的信息来创建bean.

借助构造器注入bean,有两种可选的方案

  • constructor-arg 元素
  • 使用Spring3.0 引入的c-命名空间

构造器注入bean 引用

按照现在的定义,CDPlayer bean 有一个接受CompactDisc 类型的构造器。之前已经声明了一个SgtPeppers bean,并且SgtPeppers 类实现了CompactDisc接口,所有实际上就有了一个可以注入到CDPlayer bean 的bean.

@Component
public class CDPlayer implements MediaPlayer {
    private CompactDisc cd;

    @Autowired
    public CDPlayer(CompactDisc cd) {
        this.cd = cd;
    }

    @Override
    public void play() {
        System.out.println("CDPlayer");
        cd.play();
    }
}
<bean id="compactDisc" class="Bean.AutoBean.SgtPeppers"></bean>
<bean id="cdPlayer" class="Bean.AutoBean.CDPlayer">
    <constructor-arg ref="compactDisc"/>
</bean>

当Spring 遇到这个bean 标签的时候,他会创建一个CDPlayer 的实例。constructor-arg元素会告知Spring 要将一个ID为compactDisc 的bean 引用传递到CDPlayer的构造器中。

将字面量注入到构造器中

示例代码:

public class BlankDisc implements CompactDisc {
    private String title;
    private String artist;

    public BlankDisc(String title, String artist) {
        this.title = title;
        this.artist = artist;
    }

    @Override
    public void play() {

    }
}

<bean id="blankDisc" class="Bean.AutoBean.BlankDisc">
        <constructor-arg value="title"/>
        <constructor-arg value="artist"/>
</bean>

通过使用vlue 属性将给定的值以字面量的形式注入到构造器之中。

将集合注入到构造器中

示例代码

public class BlankDisc implements CompactDisc {
    private String title;
    private String artist;
    private List<String> tracks;

    public BlankDisc(String title, String artist, List<String> tracks) {
        this.title = title;
        this.artist = artist;
        this.tracks = tracks;
    }

    @Override
    public void play() {

    }
}

 <bean id="blankDisc" class="Bean.AutoBean.BlankDisc">
        <constructor-arg value="title"/>
        <constructor-arg value="artist"/>
        <constructor-arg>
            <list>
                <value>track1</value>
                <value>track2</value>
            </list>
        </constructor-arg>
    </bean>

list 元素是constructor-arg 的子元素,这表明一个包含值得列表将会被传递给构造器中,与list 对应的还有set.

设置属性

与通过构造器注入初始化bean 对应的还有的一种是使用属性的setter 方法, property 元素为属性的Setter 方法所提供的功能与constructor-arg元素为构造器所提供的功能是一样的。

导入和混合配置

在JavaConfig 中引用XMl 配置

在XML 中引用JavaConfig

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值