Spring在配置时候有三种方案可选

1、在xml中进行显示配置

2、在java中进行显示配置

3、隐式的Bean发现机制和自动装配

今天学习的 第一种—— 在xml中进行显示配置

老规矩 先创建 CompactDisc 接口 ,DangNianQing 单首CD碟子,指定播放的CD碟子类 RandomCd 还有播放器 CDPlay

CompactDisc

package com.bean.xml;

/**
* Created by IntelliJ IDEA.
* Author XueYuan
* Data 2017/02/22
* Time 14:06
*/ public interface CompactDisc {
void play();
}

DangNianQing

package com.bean.xml;

/**
* Created by IntelliJ IDEA.
* Author XueYuan
* Data 2017/02/22
* Time 14:07
*/ public class DangNianQing implements CompactDisc { private String title = "DangNianQing";
private String artist = "张国荣"; public void play() {
System.out.println("Playing " + title + " By " + artist);
}
}

RandomCd

package com.bean.xml;

/**
* Created by IntelliJ IDEA.
* Author XueYuan
* Data 2017/02/22
* Time 14:33
*/ public class RandomCd implements CompactDisc { private String title;
private String artist; public RandomCd(String title, String artist) {
this.title = title;
this.artist = artist;
} public void play() {
System.out.println("Playing " + title + " By " + artist);
} }

CDPlay

package com.bean.xml;

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

/**
* Created by IntelliJ IDEA.
* Author XueYuan
* Data 2017/02/22
* Time 14:23
*/ public class CDPlay { private CompactDisc compactDisc; @Autowired // set注入
public void setCompactDisc(CompactDisc compactDisc) {
this.compactDisc = compactDisc;
} //构造器注入
/*public CDPlay(CompactDisc compactDisc) {
this.compactDisc = compactDisc;
}*/ public void play() {
compactDisc.play();
} }

好了,东西准备好了,下面就看准备操作了,需要建立一个配置的xml文件

<bean id="dangNianQing" class="com.bean.xml.DangNianQing"/>

装配bean 即准备好单张曲子的那个cd碟

<bean id="randomCd" class="com.bean.xml.RandomCd">
<constructor-arg index="0" value="当年情"/>
<constructor-arg index="1" value="张国荣"/>
</bean>

装配bean 即准备好指定点歌的的那个cd碟

 <!--装配com.bean.xml.CDPlay 类 但是CDPlay中需要有一个CompactDisc-->
<bean id="cdPlay" class="com.bean.xml.CDPlay">
<!-- 通过引用id名 自动装配 CompactDisc -->
<!-- <constructor-arg ref="dangNianQing"/>-->
<!--<constructor-arg ref="randomCd"/>-->
<property name="compactDisc" ref="randomCd" />
</bean>

配置bean 即要播放一首歌的cd碟子呢 还是要播放可以指定歌曲的碟子呢!

这边可以看出有多个选择如果是set注入的话就是上面的,如果是构造器注入的话,就是下面的代码(红色部分)

<!--装配com.bean.xml.CDPlay 类 但是CDPlay中需要有一个CompactDisc-->
<bean id="cdPlay" class="com.bean.xml.CDPlay">
<!-- 通过引用id名 自动装配 CompactDisc -->
<!-- <constructor-arg ref="dangNianQing"/>-->
<constructor-arg ref="randomCd"/>
<!--<property name="compactDisc" ref="randomCd" />-->
</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"> <!--装配 CompactDisc -->
<bean id="dangNianQing" class="com.bean.xml.DangNianQing"/> <!--装配com.bean.xml.CDPlay 类 但是CDPlay中需要有一个CompactDisc-->
<bean id="cdPlay" class="com.bean.xml.CDPlay">
<!-- 通过引用id名 自动装配 CompactDisc -->
<!-- <constructor-arg ref="dangNianQing"/>-->
<!--<constructor-arg ref="randomCd"/>-->
<property name="compactDisc" ref="randomCd" />
</bean> <bean id="randomCd" class="com.bean.xml.RandomCd">
<constructor-arg index="0" value="当年情"/>
<constructor-arg index="1" value="张国荣"/>
</bean>
</beans>

好了都 碟子选好了,也放入播放器了,下面就要按下 开始播放按钮看是否可以播放了

package com.bean.xml;

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; /**
* Created by IntelliJ IDEA.
* Author XueYuan
* Data 2017/02/22
* Time 14:08
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(value = "config.xml")
public class CDPlayerTest { /*@Autowired
DangNianQing dangNianQing;*/ @Autowired
CDPlay cdPlay; @Test
public void play() {
cdPlay.play();
}
}

以上就是xml显示的配置方法的简单小例子,如有错误,请指出,谢谢~

代码:https://github.com/eoooxy/springinaction test下 的com.bean.xml中

  

SpringInAction--自动化装配Bean(显示装配之xml配置)的更多相关文章

  1. 【Spring 核心】装配bean(三)XML配置

    项目包结构: src/main/java com.bonc.pojo--|-CompactDisc.java (接口) |-SgtPeppers.java     (实现类 实现 CompactDis ...

  2. Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析

    Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析 本文简要介绍了基于 Spring 的 web project 的启动流程,详细分析了 Spring 框架将开发人员基于 XML ...

  3. spring学习总结——装配Bean学习三(xml装配bean)

    通过XML装配bean Spring现在有了强大的自动化配置和基于Java的配置,XML不应该再是你的第一选择了.不过,鉴于已经存在那么多基于XML的Spring配置,所以理解如何在Spring中使用 ...

  4. Spring------自动化装配Bean(三)

    上一篇是基于java手动装配bean的实现,这一篇将通过xml手动装配bean来实现. xml配置相对于java配置有点: xml配置更加快捷 但不宜扩展 一.打开application.xml 1. ...

  5. Spring学习笔记(三)之装配Bean

    除了组件扫描与自动装配之外还有基于Java代码的装配与基于XML的装配. 有一些场景是我们不能用自动装配的,比如我们要给第三方库中的组件装配到我们的应用中,这时自动装配无效,因为自动装配只能扫描本应用 ...

  6. 03_Spring Bean的装配模式_基于Annotation配置方式

    前言 在Spring中尽管使用XML配置文件可以实现Bean的装配工作,但如果应用中Bean的数量较多,会导致XML配置文件过于臃肿,从而给维护和升级带来一定的困难.从JDK 5开始提供了名为Anno ...

  7. Spring基础篇——通过Java注解和XML配置装配bean

    自动化装配的确有很大的便利性,但是却并不能适用在所有的应用场景,比如需要装配的组件类不是由自己的应用程序维护,而是引用了第三方的类库,这个时候自动装配便无法实现,Spring对此也提供了相应的解决方案 ...

  8. Spring基础篇——通过Java注解和XML配置装配bean(转载)

      作者:陈本布衣 出处:http://www.cnblogs.com/chenbenbuyi 本文版权归作者和博客园共有,欢迎转载分享,但必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留 ...

  9. spring 配置 Java配置类装配bean

    https://www.cnblogs.com/chenbenbuyi/p/8457700.html 自动化装配的确有很大的便利性,但是却并不能适用在所有的应用场景,比如需要装配的组件类不是由自己的应 ...

  10. #Spring实战第二章学习笔记————装配Bean

    Spring实战第二章学习笔记----装配Bean 创建应用对象之间协作关系的行为通常称为装配(wiring).这也是依赖注入(DI)的本质. Spring配置的可选方案 当描述bean如何被装配时, ...

随机推荐

  1. Selenium+Python常见定位方法

    参见官网:http://selenium-python.readthedocs.io/locating-elements.html 有多种策略来定位页面中的元素.你可以使用最适合你的情况.Seleni ...

  2. python 数据分析----numpy

    NumPy是高性能科学计算和数据分析的基础包.它是pandas等其他各种工具的基础. NumPy的主要功能: ndarray,一个多维数组结构,高效且节省空间 无需循环对整组数据进行快速运算的数学函数 ...

  3. SVN 的用法

    1.   SVN的服务端配置 接下来  我们要创建一个根目录(就是用于存诸工厂的),用来存诸SVN的工厂信息(每一个工厂等于一个项目)创建地址为:   d:/svn/ root(即在这里创建一个roo ...

  4. ES6、7、8常用新特性总结(超实用)

    ES6常用新特性 1. let && const let 命令也用于变量声明,但是作用域为局部 { let a = 10; var b = 1; } 在函数外部可以获取到b,获取不到a ...

  5. LeetCode(476): Number Complement

    Given a positive integer, output its complement number. The complement strategy is to flip the bits ...

  6. 简单的Java网络爬虫(获取一个网页中的邮箱)

    import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; impo ...

  7. vscode调试pomelo和pomelo使用vscode调试

    使用vscode 通过端口remote attach进行调试 pomelo. 0. 网上好多调试pomelo的都是webstorm.或者vscode调试node的教程.但没找到vscode调试pome ...

  8. [BZOJ1131]Sta

    Description 给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大 Input 给出一个数字N,代表有N个点.N<=1000000 下面N-1条边. Output ...

  9. js 自定义事件观察者模式(发布/订阅)

    /* * 示例: * Event.create("namespace1").listen('click', function(a){ * console.log(a); * }); ...

  10. 打开PS是出现“该内存不能为read”是怎么回事?

    打开PS是出现“该内存不能为read”是怎么回事? 答:内存不能为read修复工具可以有效修复计算机运行应用程序时提示:该内存不能为read要终止程序的问题,一般XP系统才会出现这个问题. 指令修复法 ...