Spring 之通过 XML 装配 bean
1、关于 使用传统标签还是 c- p- 命名空间定义的标签,
我的观点是能用 c- p- 命名空间定义的标签 就不用 传统标签(这样会比较简洁。。。

2、强依赖使用构造器注入,可选性依赖使用属性注入。
【 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" xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
【声明简单的 bean 】
<!-- 创建一个简单的 bean(默认构造器),自动化命名 ID 默认为 soundsystem.SgtPeppers#0 -->
<bean class="soundsystem.SgtPeppers" /> <!-- 自定义 ID 非必要不使用 -->
<bean id="compactDisc" class="soundsystem.SgtPeppers" /> 【借助构造器注入初始化 bean 】
<!-- 构造器注入 bean 引用 方案一:<constructor-arg>元素 -->
<bean id="cdPlayer" class="soundsystem.CDPlayer">
<constructor-arg ref="compactDisc" />
</bean> <!-- 构造器注入 bean 引用 方案二:Spring 3.0 引入的 c-命名空间 需要额外加 XML 顶部声明 -->
<bean id="cdPlayer#0" class="soundsystem.CDPlayer" c:cd-ref="compactDisc" />
<bean id="cdPlayer#1" class="soundsystem.CDPlayer" c:_0-ref="compactDisc" /> <!-- 构造器注入字面值 方案一 <constructor-arg>元素 -->
<bean id="compactDisc#0"
class="soundsystem.BlankDisc">
<constructor-arg value="Sgt. Pepper's Lonely Hearts Club Band" />
<constructor-arg value="The Beatles" />
</bean> <!-- 构造器注入字面值 方案二 c-命名空间 -->
<bean id="compactDisc#1"
class="soundsystem.BlankDisc"
c:_0="Sgt. Pepper's Lonely Hearts Club Band"
c:_1="The Beatles" /> <!-- 装配集合 List Set 数组都可以使用 <list>和<set>标签 -->
<bean id="compactDisc#2"
class="soundsystem.BlankDisc">
<constructor-arg value="Sgt. Pepper's Lonely Hearts Club Band" />
<constructor-arg value="The Beatles" />
<constructor-arg><null/></constructor-arg>
</bean> <bean id="compactDisc#3"
class="soundsystem.BlankDisc">
<constructor-arg value="Sgt. Pepper's Lonely Hearts Club Band" />
<constructor-arg value="The Beatles" />
<constructor-arg>
<list>
<value>Sgt. Pepper's Lonely Hearts Club Band</value>
<value>With a Little help from My Friends</value>
<value>Lucy in the Sky with Diamonds</value>
</list>
</constructor-arg>
</bean> <bean id="NameOfASong" class="java.lang.String" />
<bean id="compactDisc#4"
class="soundsystem.BlankDisc">
<constructor-arg value="Sgt. Pepper's Lonely Hearts Club Band" />
<constructor-arg value="The Beatles" />
<constructor-arg>
<list>
<ref bean="NameOfASong" />
</list>
</constructor-arg>
</bean> </beans>
【设置 bean 属性】
类似于初始化 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" xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> <!-- 属性注入 -->
<!-- 强依赖使用构造器注入,可选性依赖使用属性注入 -->
<bean id="compactDisc" class="soundsystem.SgtPeppers" />
<bean id="cdPlayer#0"
class="soundsystem.CDPlayer">
<property name="compactDisc" ref="compactDisc" />
<!-- 需要强调,上面的属性必须要有 Setter方法 -->
</bean> <!-- 等价的 p 命名空间 -->
<bean id="cdPlayer#1"
class="soundsystem.CDPlayer"
p:compactDisc-ref="compactDisc" /> <!-- 注入字面量到属性 -->
<bean id="reallyBlankDisc"
class="soundsystem.BlankDisc">
<property name="title" value="Sgt. Pepper's Lonely Hearts Club Band" />
<property name="artist" value="The Beatles" />
<property name="tracks">
<list>
<value>...</value>
<value>....</value>
</list>
</property>
</bean> <!-- 等价的 p 命名空间, 无 法 用 它 来 装配 集合 -->
<bean id="reallyBlankDisc#0"
class="soundsystem.BlankDisc"
p:title="Sgt. Pepper's Lonely Hearts Club Band"
p:artist="The Beatles">
<property name="tracks">
<value>...</value>
<value>....</value>
</property>
</bean> <!-- 可取的方案 util-命令空间中的 <util:list>标签 -->
<util:list id="trackList">
<value>...</value>
<value>....</value>
</util:list> <bean id="reallyBlankDisc#2"
class="soundsystem.BlankDisc"
p:title="..."
p:artist="..."
p:tracks-ref="trackList" /> </beans>
Spring 之通过 XML 装配 bean的更多相关文章
- spring学习总结——装配Bean学习三(xml装配bean)
通过XML装配bean Spring现在有了强大的自动化配置和基于Java的配置,XML不应该再是你的第一选择了.不过,鉴于已经存在那么多基于XML的Spring配置,所以理解如何在Spring中使用 ...
- Spring实战3:装配bean的进阶知识
主要内容: Environments and profiles Conditional bean declaration 处理自动装配的歧义 bean的作用域 The Spring Expressio ...
- Spring实战2:装配bean—依赖注入的本质
主要内容 Spring的配置方法概览 自动装配bean 基于Java配置文件装配bean 控制bean的创建和销毁 任何一个成功的应用都是由多个为了实现某个业务目标而相互协作的组件构成的,这些组件必须 ...
- Spring框架(3)---IOC装配Bean(注解方式)
IOC装配Bean(注解方式) 上面一遍文章讲了通过xml来装配Bean,那么这篇来讲注解方式来讲装配Bean对象 注解方式需要在原先的基础上重新配置环境: (1)Component标签举例 1:导入 ...
- 第2章—装配Bean—通过XML装配Bean
通过XML装配Bean 尽管我们在生成Bean的过程中可以用到很多方法,但我们依然需要Spring的XML配置来完善更多的需求,下面就来介绍下XML装配Bean的过程是怎样的. 3.1创建XML配 ...
- JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(9):通过XML装配Bean
一.通过XML装配Bean 装配简易值 装配集合 命名空间装配(暂不测试) 二.测试例子 创建一个用户类:UserBean.java package com.xfwl.spring.assem; /* ...
- Spring装配Bean之XML装配bean
在Spring刚出现的时候,XML是描述配置的主要方式,在Spring的名义下,我们创建了无数行XML代码.在一定程度上,Spring成为了XML的同义词. 现在随着强大的自动化配置和Java代码的配 ...
- Spring框架(2)---IOC装配Bean(xml配置方式)
IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicat ...
- Spring实战之通过XML装配bean
尽管Spring长期以来确实与XML有着关联,但现在需要明确的是,XML不再是配置Spring的唯一可选方案.Spring现在有了强大的自动化配置和基于Java的配置,XML不应该再是你的第一选择了. ...
随机推荐
- c# 将html添加进剪贴板(带格式)
调用: ClipboardHelper.CopyToClipboard("<h1>hello world</h1>", ""); /// ...
- oralce函数
1.trunc函数处理数字和日期TRUNC(NUMBER[,DECIMAL]) 数字格式TRUNC(DATE[,FOMAT]) 日期格式2.round函数(四舍五入)ROUND(NUMBER[,DEC ...
- SurvivalShooter学习笔记(七.玩家射击)
玩家射击:(这个脚本放在玩家的空子物体上,这个位置为枪口位置) 点击鼠标,玩家射击: 射击枪口发光,射击通过射线,方向有激光效果:(关于射线不明白可以参考Unity射线相关) 射击有射击音效 射击有每 ...
- Linux下搜索文件find、which、whereis、locate
Linux下搜索文件find.which.whereis.locate: - which 寻找“执行文件” - -a 将所有可找到的命令均列出,而不仅仅列出第一个找到的命令名称 - whereis 寻 ...
- jacob操作 office 内部对应代码
Excel操作 转换 xlAddIn 18 Microsoft Office Excel 加载项 xlAddIn8 ...
- tornado详细介绍
Tornado Web服务器概览,tornado教程,tornado开发教程 概览 漏洞 | 漏洞目录 | 安全文档 Overview 下载和安装 模块索引 主要模块 底层模块 Tornado 攻略 ...
- 更轻更快的Vue.js 2.0与其他框架对比(转)
更轻更快的Vue.js 2.0 崭露头角的JavaScript框架Vue.js 2.0版本已经发布,在狂热的JavaScript世界里带来了让人耳目一新的变化. Vue创建者尤雨溪称,Vue 2.0 ...
- iOS平台iPhone和iPad免费开放源代码游戏案例列表
此页面列表收集的是一些iPhone和iPad等iOS操作系统的开放源代码(Open Source)游戏.这些iOS开源游戏都是曾经或正发布在App Store.列表中的这些iOS开源游戏都是使用主流的 ...
- CodeForces 156A Message(暴力)
A. Message time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...
- 《挑战程序设计竞赛》2.3 动态规划-进阶 POJ1065 1631 3666 2392 2184(5)
POJ1065: Description There is a pile of n wooden sticks. The length and weight of each stick are kno ...