一、前言

本文承接上一节:Spring_总结_03_装配Bean(二)之Java配置

上一节说到,当需要显示配置时,首选类型安全并且比XML更强大Java配置。

那什么时候使用XML配置呢?

(1)维护已有XML配置

(2)想使用便利的XML命名空间,并且在JavaConfig中没有同样的实现。

二、引入schema

<?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"> </beans>

用来装配bean的最基本的XML元素包含在spring-beans模式中,在上面这个XML文件中,它被定义为根命名空间。

<beans>是该模式中的一个元素,它是所有Spring配置文件的根元素。

三、声明Bean

    <bean id="compactDisc" class="soundsystem.SgtPeppers"></bean>

id :指定bean的名字,以便于被其他bean引用。

class : 全类名,指定创建bean的Class

注:

(1)通过xml配置的方式,我们不再直接负责创SgtPeppers,而在JavaConfig中,我们却是需要这样做的。当Spring发现 <bean>元素时,他会调用默认构造器来创建bean。

(2)将bean的类型以字符串的形式设置在class属性中,不便于重构。(如修改类名时)

四、构造器注入

注入bean有两种方式:

(1)构造器注入

(2)属性注入

这两种方式如何选择:强依赖选择构造器注入,可选性依赖使用属性注入。

1. constructor-arg

<?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="compactDisc" class="soundsystem.SgtPeppers"></bean> <bean id="cdPlayer" class="soundsystem.CDPlayer">
<constructor-arg ref="compactDisc" />
</bean> </beans>

2. c-命名空间

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:c="http://www.springframework.org/schema/c"
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="compactDisc" class="soundsystem.SgtPeppers"></bean> <bean id="cdPlayer" class="soundsystem.CDPlayer"
c:cd-ref="compactDisc"/> <bean id="cdPlayer2" class="soundsystem.CDPlayer"
c:_0-ref="compactDisc"/> </beans>

(1)构造器参数名

"c:"为命名空间

“-ref”表示注入引用

“cd”为构造器参数名

(2)构造器参数索引

“_i”为第i个参数。

表示为第i个参数注入bean

3. 字面量

将字面量注入到构造器中

(1)constructor-arg

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:c="http://www.springframework.org/schema/c"
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="blankDisc" class="soundsystem.BlankDisc">
<constructor-arg value="字面量"/>
</bean> </beans>

(2)构造器参数名

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:c="http://www.springframework.org/schema/c"
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="blankDisc" class="soundsystem.BlankDisc"
c:_title="标题"
c:_author="作者" /> </beans>

(3)构造器参数索引

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:c="http://www.springframework.org/schema/c"
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="blankDisc" class="soundsystem.BlankDisc"
c:_0="标题"
c:_1="作者" /> </beans>

4. 集合

BlankDisc

public class BlankDisc  implements CompactDisc{
private String title;
private String author;
private List<String> tracks; public BlankDisc(String title, String author, List<String> tracks) {
this.title = title;
this.author = author;
this.tracks = tracks;
} public void play(){
System.out.print("aaaaaaaa");
}
}

beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:c="http://www.springframework.org/schema/c"
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="compactDisc" class="soundsystem.BlankDisc">
<constructor-arg value="标题"/>
<constructor-arg value="作者"/>
<constructor-arg>
<list>
<value>111111111</value>
<value>222222222</value>
<value>333333333</value>
<value>444444444</value>
<value>555555555</value>
</list>
</constructor-arg>
</bean> <bean id="compactDisc2" class="soundsystem.BlankDisc">
<constructor-arg value="标题"/>
<constructor-arg value="作者"/>
<constructor-arg>
<list>
<ref bean="compactDisc" />
<ref bean="compactDisc" />
<ref bean="compactDisc" />
<ref bean="compactDisc" />
</list>
</constructor-arg>
</bean> <bean id="compactDisc3" class="soundsystem.BlankDisc">
<constructor-arg value="标题"/>
<constructor-arg value="作者"/>
<constructor-arg>
<set>
<value>111111111</value>
<value>222222222</value>
<value>333333333</value>
<value>444444444</value>
<value>555555555</value>
</set>
</constructor-arg>
</bean> </beans>

五、属性注入

1.注入引用

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:p="http://www.springframework.org/schema/p"
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="compactDisc" class="soundsystem.CompactDisc" /> <bean id="cdPlayer" class="soundsystem.CDPalyer" >
<property name="compactDisc" ref="compactDisc" />
</bean> <bean id="cdPlayer2" class="soundsystem.CDPalyer"
p:compactDisc-ref="compactDisc"/> </beans>

2.注入字面量

BlankDisc

public class BlankDisc  implements CompactDisc{
private String title;
private String author;
private List<String> tracks; public void setTitle(String title) {
this.title = title;
} public void setAuthor(String author) {
this.author = author;
} public void setTracks(List<String> tracks) {
this.tracks = tracks;
} public void play(){
System.out.print("aaaaaaaa");
}
}

beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/plugin"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/plugin http://www.springframework.org/schema/plugin/spring-plugin.xsd"> <!--1.空属性-->
<bean id="reallyBlankDisc" class="soundsystem.BlankDisc" /> <!--2.注入list-->
<bean id="compactBlankDisc" class="soundsystem.BlankDisc" >
<property name="title" value="标题"/>
<property name="author" value="作者"/>
<property name="tracks" >
<list>
<value>11111111</value>
<value>11111111</value>
<value>11111111</value>
<value>11111111</value>
</list>
</property> </bean> <!--3.p命名空间装配引用与装配字面量的唯一区别在于是否带有 -ref
p命名空间不能用来装配集合
-->
<bean id="compactBlankDisc2" class="soundsystem.BlankDisc"
p:title="标题"
p:author="作者">
<property name="tracks" >
<list>
<value>11111111</value>
<value>11111111</value>
<value>11111111</value>
<value>11111111</value>
</list>
</property>
</bean> <!--4.<util:list>会创建一个列表bean -->
<util:list id="tracklist">
<value>1111111111</value>
<value>1111111111</value>
<value>1111111111</value>
<value>1111111111</value>
</util:list>
<bean id="compactBlankDisc3" class="soundsystem.BlankDisc"
p:title="标题"
p:author="作者"
p:tracks-ref="tracklist" />
</beans>

Spring_总结_03_装配Bean(三)_XML配置的更多相关文章

  1. Spring_总结_03_装配Bean(二)_Java配置

    一.前言 本文承接上一节:Spring_总结_03_装配Bean(一)之自动装配 上一节提到,装配Bean有三种方式,首先推荐自动装配.当自动装配行不通时,就需要采用显示配置的方式了. 显示配置有两种 ...

  2. Spring_总结_03_装配Bean(四)_导入与混合配置

    一.前言 本文承接上一节:Spring_总结_03_装配Bean(三)之XML配置 在典型的Spring应用中,我们可能会同时使用自动化和显示配置.同时,可能在某些场景下我们需要混合使用JavaCon ...

  3. Spring_总结_03_装配Bean(一)_自动装配

    一.前言 本文承接上一节:Spring_总结_02_依赖注入 在上一节我们了解到依赖注入的实质就是装配. 这一节我们来学习下装配Bean的相关知识. 二.Bean的装配机制 1.三种装配机制 Spri ...

  4. IoC容器装配Bean(xml配置方式)(Bean的生命周期)

    1.Spring管理Bean,实例化Bean对象 三种方式 第一种:使用类构造器实例化(默认无参数) package cn.itcast.spring.initbean; /** * 使用构造方法 实 ...

  5. IDEA02 利用Maven创建Web项目、为Web应用添加Spring框架支持、bean的创建于获取、利用注解配置Bean、自动装配Bean、MVC配置

    1 环境版本说明 Jdk : 1.8 Maven : 3.5 IDEA : 专业版 2017.2 2 环境准备 2.1 Maven安装及其配置 2.2 Tomcat安装及其配置 3 详细步骤 3.1 ...

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

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

  7. SpringInAction读书笔记--第2章装配Bean

    实现一个业务需要多个组件相互协作,创建组件之间关联关系的传统方法通常会导致结构复杂的代码,这些代码很难被复用和单元测试.在Spring中,对象不需要自己寻找或创建与其所关联的其它对象,Spring容器 ...

  8. Bean 注解(Annotation)配置(3)- 依赖注入配置

    Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...

  9. Bean 注解(Annotation)配置(2)- Bean作用域与生命周期回调方法配置

    Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...

随机推荐

  1. 深度学习:Keras入门(一)之基础篇(转)

    转自http://www.cnblogs.com/lc1217/p/7132364.html 1.关于Keras 1)简介 Keras是由纯python编写的基于theano/tensorflow的深 ...

  2. JAVA中遍历Map和Set方法,取出map中所有的key

    Java遍历Set集合 1.迭代器遍历: Set<String> set = new HashSet<String>(); Iterator<String> it ...

  3. MySQL数据库(4)_MySQL数据库外键约束、表查询

    一.外键约束 创建外键 --- 每一个班主任会对应多个学生 , 而每个学生只能对应一个班主任 ----主表 CREATE TABLE ClassCharger( id TINYINT PRIMARY ...

  4. PHP下使用Redis消息队列发布微博

    phpRedisAdmin :github地址  图形化管理界面 git clone [url]https://github.com/ErikDubbelboer/phpRedisAdmin.git[ ...

  5. iOS Autolayout 在tableView scrollView 适用 学习

    1  如何自动适应cell的高度 autolayout  里面 使用 systemLayoutSizeFittingSize 方法 (系统通过 已知的完整的Constraints和view的属性来计算 ...

  6. 微服务架构~BFF和网关是如何演化出来的

    介绍 BFF(Backend for Frontend)和网关Gateway是微服务架构中的两个重要概念,这两个概念相对比较新,有些开发人员甚至是架构师都不甚理解. 本文用假想的公司案例+图示的方式, ...

  7. linux eclipse的桌面快捷方式

    在桌面上创建一个eclipse.desktop [Desktop Entry] Encoding=UTF- Name=Eclipse Comment=Eclipse IDE Exec=/opt/Dev ...

  8. Linux yum源码包安装和卸载

    Linux 下的绝大多数源码包都是用 C 语言编写的,还有少部分是用 C++ 等其他程序语言编写的.所以,要想安装源码包,必须安装 C 语言编译器 gcc(如果是用 C++ 编写的程序,则还需要安装 ...

  9. C++ IPv4与IPv6的兼容编码(转,出自http://blog.csdn.net/ligt0610/article/details/18667595)

    这里不再对IPv6 socket相关编程的基础知识进行讲解,只提供一个IP协议无关的服务端和客户端的代码,仅供参考. 服务端代码: #include <iostream> #include ...

  10. ubuntu没有声音解决办法

    cd /usr/lib/dbus-1.0/ chmod +x dbus-daemon-launch-helper sudo gpasswd -a $USER audio sudo killall pu ...