Spring_总结_03_装配Bean(三)_XML配置
一、前言
本文承接上一节: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配置的更多相关文章
- Spring_总结_03_装配Bean(二)_Java配置
一.前言 本文承接上一节:Spring_总结_03_装配Bean(一)之自动装配 上一节提到,装配Bean有三种方式,首先推荐自动装配.当自动装配行不通时,就需要采用显示配置的方式了. 显示配置有两种 ...
- Spring_总结_03_装配Bean(四)_导入与混合配置
一.前言 本文承接上一节:Spring_总结_03_装配Bean(三)之XML配置 在典型的Spring应用中,我们可能会同时使用自动化和显示配置.同时,可能在某些场景下我们需要混合使用JavaCon ...
- Spring_总结_03_装配Bean(一)_自动装配
一.前言 本文承接上一节:Spring_总结_02_依赖注入 在上一节我们了解到依赖注入的实质就是装配. 这一节我们来学习下装配Bean的相关知识. 二.Bean的装配机制 1.三种装配机制 Spri ...
- IoC容器装配Bean(xml配置方式)(Bean的生命周期)
1.Spring管理Bean,实例化Bean对象 三种方式 第一种:使用类构造器实例化(默认无参数) package cn.itcast.spring.initbean; /** * 使用构造方法 实 ...
- 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 ...
- Spring基础篇——通过Java注解和XML配置装配bean(转载)
作者:陈本布衣 出处:http://www.cnblogs.com/chenbenbuyi 本文版权归作者和博客园共有,欢迎转载分享,但必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留 ...
- SpringInAction读书笔记--第2章装配Bean
实现一个业务需要多个组件相互协作,创建组件之间关联关系的传统方法通常会导致结构复杂的代码,这些代码很难被复用和单元测试.在Spring中,对象不需要自己寻找或创建与其所关联的其它对象,Spring容器 ...
- Bean 注解(Annotation)配置(3)- 依赖注入配置
Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...
- Bean 注解(Annotation)配置(2)- Bean作用域与生命周期回调方法配置
Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...
随机推荐
- 创建spring boot 项目所遇到的问题
1.添加完MySQL和jdbc约束后,在配置文件内spring.datasource.driver-class-name=com.mysql.jdbc.Driver 报错,显示找不到驱动包,原因是: ...
- Kafka高可用的保证
zookeeper作为去中心化的集群模式,消费者需要知道现在那些生产者(对于消费者而言,kafka就是生产者)是可用的. 如果没有zookeeper每次消费者在消费之前都去尝试连接生产者测试下是 ...
- 剑指offer 面试35题
面试35题: 题目:复杂链表的复制 题:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中 ...
- 算法寒假实习面试经过之 滴滴(电话一面二面 offer)
一面:1h 介绍比赛项目. lr与xgb的区别? xgb 为什么不用归一化,onehot? xgb 与 gbdt的区别. 做这些比赛你们的优势在哪,既然全是相同的套路. RCNN的原理, CNN的原理 ...
- SQL语句 自连表查询。inner join用法,partition by ,列转行查询
use mydb1 go -- 表T_Employee2 -- Id Name Position Dept -- 1 张三 员工 市场部 -- 2 李四 经理 销售部 -- 3 王五 经理 市场部 - ...
- VM and Docker Container
https://www.zhihu.com/question/48174633 在开始讨论前,先抛出一些问题,可先别急着查看答案,讨论的过程可以让答案更有趣,问题如下: Docker 容器有自己的ke ...
- webbrowser控件——Windows下的开发利器
首先说明,本人比较菜,做C++没多长时间. 刚开始用MFC写程序时,连个基本的字体都不会变(颜色.大小等), 索性干脆就啥也不改了,直接默认,界面就那样了,老子不管了. 心想这C++做个界面咋就那么麻 ...
- github资源下载速度慢的解决办法
xx-net:https://github.com/XX-net/XX-Net
- <script>放在head内和body内有什么区别
加载的顺序不一样,你可以把HTML看成从上往下加载的. 例如在网速慢的情况下把js代码放在body底部用户会先看到网页结构,等js加载完成后才出现特效 区别简述: 在HTML body部分中的Java ...
- Python编程-继承和接口
一.继承 1.什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类. 继承的好处: 可以使用现有类的所有功能,并在无 ...