文档章节

spring学习4-bean配置文件

大嘴吃鸡腿
 大嘴吃鸡腿
发布于 2014/03/17 12:12
字数 626
阅读 3018
收藏 3

上篇简单介绍了一下bean配置文件注入简单的属性和复杂一点的类注入,今天说一下其他类型的注入。

spring中提供配置Bean有三种实例化的方式

  1. 类构造器实例化
  2. 静态工厂方法实例化
  3. 实例工厂方法实例化

类构造器实例化就是昨天说的那种


   
< bean id ="engine" class ="com.demo.spring.car.QiyouEngine" ></ bean >

使用这个实例化QiyouEngine类,调用的是类默认的构造函数

如果想要在构造器里加入参数就得在替换掉上篇写在bean标签里的property标签,改成<constructor-arg></constructor-arg>

比如把上篇中使用set方法注入的属性name和engine,改成用构造器注入就的这么写:


   
< bean id ="car" class ="com.demo.spring.car.Car" > < constructor-arg index ="0" type ="java.lang.String" value ="宝马" ></ constructor-arg > < constructor-arg index ="1" type ="com.demo.spring.car.IEngine" ref ="engine" ></ constructor-arg > </ bean >

<constructor-arg>标签中index指的是该属性在构造器中参数的顺序,从0开始。而type是写注入属性的类型和构造器的顺序是一样的


   
public Car(String name,IEngine engine){ this .name = name; this .engine = engine; }

接下来讲如何注入集合类型,如List,Set,Map等

List的注入和数组的注入是采取相同的标签


   
< bean id ="hobby" class ="com.demo.spring.Hobby" > < property name ="hobbys" > < list > < value > 篮球 </ value > < value > 足球 </ value > </ list > </ property > </ bean >

hobby类的结构


   
public class Hobby { private List < String > hobbys; public List < String > getHobbys() { return hobbys; } public void setHobbys(List < String > hobbys) { this .hobbys = hobbys; } @Override public String toString() { return " Hobby [hobbys= " + hobbys + " ] " ; } }

以上执行的结果

image

由于原有的方式List是写在bean标签内,得不到复用,我们可以借助spring提供的ListFactoryBean来实现


   
< bean id ="hobby" class ="com.demo.spring.Hobby" > < property name ="hobbys" ref ="hobbys" ></ property > </ bean > < bean id ="hobbys" class ="org.springframework.beans.factory.config.ListFactoryBean" > < property name ="sourceList" > < list > < value > 篮球 </ value > < value > 足球 </ value > </ list > </ property > </ bean >

需要说明的是虽然上面使用<list>可以实现这样的效果,不过这是旧的标签了,我们照样可以在spring 3.2中使用,但是官方提供了新的方式

首先需要在xml顶部添加一些信息,加粗的就是需要添加的命名空间

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      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">

使用spring新标签<util:list>,大大简化了编写的复杂度


   
< util:list id ="hobbys" list-class ="java.util.ArrayList" > < value > 篮球 </ value > < value > 足球 </ value > </ util:list >

其他的Map和Set标签可以查看官网的api文件

http://docs.spring.io/spring/docs/3.2.8.RELEASE/spring-framework-reference/htmlsingle/#xsd-config-body-schemas-util-map

© 著作权归作者所有

大嘴吃鸡腿
粉丝 9
博文 14
码字总数 7816
作品 0
厦门
程序员
私信 提问
浅谈Spring设计分析_201800814

spring学习的思考与发现 1:spring中核心的几个部分 1:core : 工具类角色 2:beans : 各种实例化,被管理的对象与类 3:为整个spring容器提供维护,最基础的环境 2:IOC和AOP应该是在beans模块实现...

noteman
2018/08/14
6
0
springMVC+mybatis+mysql学习心得

MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。 MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。 MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、...

magelee
2015/07/14
1K
1
spring学习5-注解式bean配置+Junit简易使用

隔了两天,忙着面试,快累死了,终于有空来写博客了。好了,发完牢骚,进入我们今天的学习。 上篇spring学习4-bean配置文件中学习了使用xml配置文件配置bean,是不是觉得不淡定,每写一个类,...

大嘴吃鸡腿
2014/03/20
1K
0
InitializingBean的作用

最近工作需要得到sping中的每个事物需要执行的sql,称机会简单研究了一下spring的事务,项目中管理事务比较简单,用TransactionTemplate,就直接以TransactionTemplate为入口开始学习。 Tran...

哲别0
2017/10/24
16
0
Spring学习笔记1——基础知识

1.在java开发领域,Spring相对于EJB来说是一种轻量级的,非侵入性的Java开发框架,曾经有两本很畅销的书《Expert one-on-one J2EE Design and Development》和《Expert one-on-one J2EE deve...

李长春
2011/10/09
514
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.4K
15
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
41
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部