博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring学习4-bean配置文件
阅读量:6952 次
发布时间:2019-06-27

本文共 2047 字,大约阅读时间需要 6 分钟。

hot3.png

上篇简单介绍了一下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 + " ] " ; } }

以上执行的结果

由于原有的方式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="

       xmlns:xsi="
      xmlns:util="
       xsi:schemaLocation="
>

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

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

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

转载于:https://my.oschina.net/u/557735/blog/208863

你可能感兴趣的文章
oVirt VM (CentOS) template & clone
查看>>
Flutter框架分析(二)-- 初始化
查看>>
mac更新系统后Android studio Git不能用,提示missing xcrun at
查看>>
微信公众号排版
查看>>
Swift基础语法学习-3.类型转换
查看>>
向你安利了一个编辑器,并丢给你一堆插件
查看>>
Flutter 入门之 ListTile 使用指南
查看>>
Android Material Design控件使用(一)——ConstraintLayout 约束布局
查看>>
为什么区块链世界既需要计算机科学家也需要经济学家?
查看>>
Atom 微信小程序文件代码高亮
查看>>
Qtum量子链周报(3月18日-3月24日)
查看>>
couchbase介绍与实践(一)
查看>>
JavaScript正则表达式(2)
查看>>
开源 | Rainbond 3.5 pre-release
查看>>
css中px、em、rem区别与使用
查看>>
两个男同事打架 公司决定要不离职, 要不手牵手一下午, 结果他俩就选择.........
查看>>
(三)java版spring cloud+spring boot 社交电子商务平台 - Spring Cloud集成项目简介
查看>>
本地搭建ios测试包上传下载安装环境(类似蒲公英)
查看>>
BCH大区块导致中心化其实是伪命题
查看>>
Linux软件包管理之源码安装
查看>>