【Spring】Bean的配置

Bean的配置



基于XML文件的配置

之前的文章就是采用的这种方式,通过在配置文件<bean> 标签下设置类的全类名,来进行Bean的声明,实例的创建是通过反射在IOC容器中创建的,所以需要提供一个无参数的构造方法。
这里写图片描述

id是用来标识这个Bean的,是唯一的
这里的class我这么写,是因为为了方便直接在src目录下创建的HelloWorld类,没有包,所以HelloWorld就是它的全类名。

属性的注入

这里也进行了属性的注入。注入的方式一般有2种:
1. 设值注入
使用Bean的setter方法进行注入,是开发中最常用的注入方式。
2. 构造注入
使用构造方法进行注入。
注入方式可以参考这篇文章

这里就不进行讨论了,主要关注可注入的类型。
上面的HelloWorld类有一个类型为String的name属性,
这里写图片描述
我们在配置文件中可以直接使用property标签中的name,value属性就可以注入,HelloWorld例子可能表述的不太合适,我们重新举一个例子。

首先有一个Person类代表人类,具体定义如下:
这里写图片描述

在配置文件中做如下配置:
这里写图片描述

也可以把value写成标签的形式:
这里写图片描述

这样就声明成功了一个20岁才160的老王。让我们测试一下:
写个测试类:
这里写图片描述
运行一下:
这里写图片描述
可以看到成功地打印出了160的老王。

例如String和int、double等基本类型以及其封装类型 进行配置的时候,直接使用name、value进行设置就好,但是当遇到引用类型的时候呢,不用担心Spring同样可以为我们做到,接下来我们需要定义一个Hat类。
这里写图片描述

然后给Person添加一个Hat的引用,并添加setter方法,重写toString()方法。
这里写图片描述

然后重新去配置一个带帽子的老王:
首先要声明一个帽子Bean,然后再在老王属性配置中引用这个Bean。
这里写图片描述

测试一下:
这里写图片描述
成功的打印出了带小红帽的老王。

当然也可以把帽子作为内部Bean注入到老王的hat中。
这里写图片描述

注:内部Bean就没有必要写id了,因为只能在内部引用。
运行结果:
这里写图片描述

这样是不是感觉Spring很强大了,厉害的还在后面呢!

集合的注入

你使用value/ref的时候,只能设置或者引用单个的Bean,当你想要多个Bean怎么办呢?
比如老王想要很多的帽子,Spring为我们提供装配集合类型的功能,下面我们修改Person的属性域,修改setter方法和toString方法如下:
这里写图片描述

重新配置,再声明几顶帽子,然后使用list元素进行配置,具体如下:
这里写图片描述
运行成功:
这里写图片描述

除了<list>外,Spring还支持<set><map><props>等元素, 分别对应Java语言的Collection 中的List、Set、Map和Properties,(数组也用list,就是上面例子)使用方法都是一个道理,大家可以看书或者官方文档。
这里是链接:Spring Framework Reference Documentation
这是一个官方的例子:
这里写图片描述
上面的例子大多数采用的都是设值注入,至于构造注入是一个道理,这里就不在赘述,自己可以试一试。

空值的注入

这个比较特殊,也是为了特殊的需要(至少现在我没有遇到),配置如下:
这里写图片描述
还有空字符的注入:
这里写图片描述

官方描述:
这里写图片描述

特殊的字符

因为我们的配置文件是XML,尖括号属于特殊的字符,如果我们想要配置的属性中含有 < 我们可以使用<![CDATA[]]>
这里写图片描述

使用命名空间

XML写起来好像尖括号好多啊,没关系,Spring为我们提供了很多方便的命名空间,利用命名空间对配置文件进行重构:
这里写图片描述

明显比之前的配置文件简洁好多是吧。运行了下,然而报错了 →_→
这里写图片描述

通配符的匹配很全面, 但无法找到元素 ‘util:list’ 的声明

很奇怪的错误吧,哈哈,不慌,来阅读一下官方文档,找到了问题所在:
这里写图片描述
原来是少几行schema ,我们在配置文件中加入这两行运行一下:
这里写图片描述

成功运行:
这里写图片描述

在这里再贴一下官方的文档地址:Spring Framework Reference Documentation

基于注解的配置

还没有看到,以后来填坑。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值