一、前言

本文承接上一节: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. 小计---pandas读取带有中文文件名或者包含中文内容的文件

    python2下: # -*- coding: utf-8 -*- import pandas as pd mydata = pd.read_csv(u"例子.csv") #前面加 ...

  2. Django:popup弹出框简单应用实例

    效果:在p1.html页面点击,弹出p2的弹出框,填写数据,在 popup_response页面处理数据 1.url设置 urlpatterns = patterns( url(r'^p1.html' ...

  3. Js onload 解析

    Js onload的使用方法. 1.在script中调用 window.onload = function(){ function1(); function2(); function3(); }; 或 ...

  4. Centos---linux配置 集群搭建

    网络配置 1.创建虚拟机mini1: 1.1.网络配置 NAT网络模式模式 直接修改  /etc/sysconfig/network-script/ifcfg-eth0 输入service netwo ...

  5. 主攻ASP.NET.4.5.1 MVC5.0之重生:政府行政网站常用友情链接跳转javascript[干货分享]

    <!-----------------------------------> <script language="JavaScript" type="t ...

  6. java验证类ValidUtils

    ValidUtils.java package com.lyqc.utils; import org.apache.commons.lang.StringUtils; public class Val ...

  7. mysql性能优化的一些建议

    mysql性能优化的一些建议 1.EXPLAIN 你的 SELECT 查询 查看rows列可以让我们找到潜在的性能问题. 2.为关键字段添加索引,比如:where, order by, group b ...

  8. goseq

    goseq是一个R包,用于寻找GO terms,即基因富集分析. GO terms是标准化描述基因或基因产物的词汇,包括三方面,cellular component,molecular funcito ...

  9. python局部变量引用问题

    a = [1, 2] b = 'Immutable' def test(): # global b print(a) a.append('asd') b = b + 'asd' # 当只是引用变量b的 ...

  10. iOS应用适配IPV6

    网络收集,连接如下: 针对苹果iOS最新审核要求为应用兼容IPv6 iOS应用支持IPV6,就那点事儿 iOS 适配iPV6的修改(AF及其他第三方库)