SpringAction学习一、装配bean:XML装配bean

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/MASORL/article/details/82629043

具体步骤 

(1)普通的接口

(2)实现接口的类,该类需要装配到spring bean中

(3)xml配置文件

示例代码

接口1:

package com.spring.action.xmlconfig;

/**
 * 一个光盘接口
 */
public interface CompactDisc {
    void sing();//光盘的sing功能
}

接口1实现

package com.spring.action.xmlconfig;


/**
 * CompactDisc实现类
 */
public class SgtPeppers implements CompactDisc {
    public void sing() {
        System.out.println("sgtPeppers的sing方法");
    }
}

接口2

package com.spring.action.xmlconfig;

/**
 * 媒体播放器
 */
public interface MediaPlayer {
    void play(); //一个播放方法
}

接口2实现

package com.spring.action.xmlconfig;

import org.springframework.beans.factory.annotation.Autowired;

public class CDPlayer implements MediaPlayer {
    private CompactDisc compactDisc;

    public CDPlayer(CompactDisc compactDisc){
        this.compactDisc = compactDisc;
    }
    public void play() {
        System.out.println("播放器开始播放");
        compactDisc.sing();
    }
}

XML配置文件

<constructor-arg>:借助构造器来注入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.xsd">

    <bean id="sgtPeppers" class="com.spring.action.xmlconfig.SgtPeppers"/>

    <bean id="cdPlayer" class="com.spring.action.xmlconfig.CDPlayer">
        <constructor-arg name="compactDisc" ref="sgtPeppers"/>
    </bean>

</beans>

测试类

package com.spring.action;

import com.spring.action.xmlconfig.CompactDisc;
import com.spring.action.xmlconfig.MediaPlayer;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

//使用SpringJUnit4ClassRunner,可以在测试开始的时候自动创建Spring的应用上下文
@RunWith(SpringJUnit4ClassRunner.class)
//导入配置
@ContextConfiguration(locations = "classpath:site.xml")
public class XMLconfigTest {
    @Autowired
    private CompactDisc compactDisc;

    @Autowired
    private MediaPlayer mediaPlayer;
    @Test
    public void play() {
        mediaPlayer.play();
    }
}

运行结果

9月 11, 2018 5:15:28 下午 org.springframework.context.support.GenericApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.GenericApplicationContext@1623b78d: startup date [Tue Sep 11 17:15:28 CST 2018]; root of context hierarchy
播放器开始播放
sgtPeppers的sing方法

遇到的问题:

因为我使用的是IDEA 开发环境,所以测试类无法访问src目录下的xml文件。导致了FileNotFindExcetion错误。

解决方法:

方法一:把xml放入resources 文件夹中,或者把配置的文件夹设置为resources.

方法二:因为我使用了maven,所以可以在maven中加入以下代码,也可以解决问题。

 <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>

        </resources>
    </build>

猜你喜欢

转载自blog.csdn.net/MASORL/article/details/82629043