初始化时引用java注解配置bean或xml配置bean

本文介绍了如何在Spring中结合使用Java注解和XML配置来初始化bean。通过@ImportResource注解,可以在Java配置类中引用XML配置文件中的bean,例如在CD播放器配置中引入CD配置。同时,XML配置文件也可以通过<bean>元素导入JavaConfig类。文中提供了CD播放器和CD的具体实现示例,并展示了测试结果。

本文参考自:《Spring实战(第4版)》

 

一、初始化时java注解引用xml中配置的bean

关键注解:@ImportResource,下面举例CD播放器配置中引入CD的配置信息

 CD播放器配置类:

/**
 * @Author river66
 * @Date 2020/4/4 22:21
 * <p>
 * CD播放器配置类
 */
@Configuration
@ImportResource("classpath:cd-config.xml")
public class CDPlayerConfig {

    @Bean
    public CDPlayer cdPlayer(CD cd) {
        return new CDPlayer(cd);
    }
}

CD类配置文件(根类路径):cd-config.xml

<?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-4.0.xsd">

    <bean class="com.river.boot.bean.JayChouCD">
        <property name="albumName" value="《七里香》"/>
    </bean>
</beans>

CD接口:

/**
 * @Author river66
 * @Date 2020/4/4 22:18
 * <p>
 * CD 唱片接口
 */
public interface CD {
    void play();
}

具体的CD类:

import com.river.boot.interfaces.CD;
import lombok.Data;

/**
 * @Author river66
 * @Date 2020/4/4 22:26
 * <p>
 * 周杰伦唱片
 */
@Data
public class JayChouCD implements CD {
    private static final String author = "Jay Chou";

    /**
     * 专辑名称
     */
    private String albumName;

    @Override
    public void play() {
        System.out.println(author + "'s album: " + albumName);
    }
}

 CD播放器:

/**
 * @Author river66
 * @Date 2020/4/4 22:24
 * <p>
 * CD播放器
 */
public class CDPlayer {
    private CD cd;

    public CDPlayer(CD cd) {
        this.cd = cd;
    }

    public void play() {
        cd.play();
    }
}

测试打印:

Jay Chou's album: 《七里香》

 

二、初始化时在xml配置文件中引用java注解配置的bean

事实上,<import>元素只能导入其他的XML配置文件,并没有XML元素能够导入JavaConfig类(标有:@Configuration的类

<import resource="classpath:cd-config.xml"/>

 但是,有一个你已经熟知的元素能将Java配置导入到XML配置中:<bean>元素。为了将JavaConfig类导入到XML配置中。

xml配置文件: cd-player-config.xml(删除上面的CDPlayerConfig.java文件)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:c="http://www.springframework.org/schema/c"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">

    <bean class="com.river.boot.config.CDConfig"/>
    <bean id="cdPlayer"
          class="com.river.boot.bean.CDPlayer"
          c:cd-ref="jayChouCD"/>
</beans>

 说明:

属性名以c:”开头,也就是命名空间的前缀。接下来就是要装配的构造器参数名(也就是CDPlayer中的构造函数参数名:cd),在此之后是“-ref,这是一个命名的约定,它会告诉 Spring,正在装配的是一个bean的引用,这个bean的名字是jayChouCD,而不是字面量“jayChouCD”很显然,使用c-命名空间属性要比使用<constructor-arg>元素简练得多。
 
java配置文件:CDConfig.java删除上面的cd-config.xml文件
**
 * @Author river66
 * @Date 2020/4/4 22:15
 */
@Configuration
@ImportResource("classpath:cd-player-config.xml")
public class CDConfig {

    /**
     * 周杰伦CD唱片
     */
    @Bean
    public CD jayChouCD() {
        JayChouCD cd = new JayChouCD();
        cd.setAlbumName("《十一月的肖邦》");
        return cd;
    }
}

测试打印:

Jay Chou's album: 《十一月的肖邦》

 
 

觉得有用的老铁点个赞呗~

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值