什么是Bean管理?
Bean管理指的是Spring创建对象和注入属性两个操作。而Bean管理有两种实现方式,一种是基于XML配置文件,另一种是基于注解方式实现,本文介绍基于XML配置文件实现。
bean标签介绍
bean标签中可以设置许多属性,下面列举一些常用的属性: id:标签的唯一标识 class:存放类的全路径
Spring创建对象
在配置文件中输入bean标签来创建,需要写明创建对象的id和class路径
<bean id="book" class="wqy.spring5.bean.Book"> //存放全路径
注入属性
Spring注入属性操作大同小异,大体分为注入基本属性和注入对象属性,下面一一介绍这两种情况
注入基本属性:
在bean标签内使用property标签,写明属性名称(name)和属性值(value)即可,在此不过多赘述.
<property name="name" value="阳哥心经"></property>
注入对象属性
1.注入外部bean:一个类中调用另一个类中的方法(以servi和dao关系为例在:service 调用 dao 里面的方法)
在创建对象的bean标签外另起一个bean标签,再在创建对象的bean标签中利用property的属性ref(referer:引用,在此后的学习中注入一些奇奇怪怪的东西大多采用此种方式)引入即可。
<bean id="userService" class="wqy.spring5.service.userService" >
<property name="userDao" ref="userDaoImpl"></property>
</bean>
<bean id="userDaoImpl" class="wqy.spring5.dao.userDaoImpl"></bean>
2.注入内部bean:在实体类之间表示一对多关系(以部门和员工的关系为例) 在注入属性时,在property标签内部直接声明一个bean标签进行注入即可
<bean id="emp" class="wqy.spring5.bean.emp">
<property name="name" value="YangGer"></property>
<property name="gender" value="Man"></property>
<property name="dept">
<bean id="dept" class="wqy.spring5.bean.dept">
<property name="name" value="卡密"></property>
</bean>
</property>
</bean>
3.级联赋值及其两种写法
①跟外部注入大体相同(级联赋值在引入外部bean的时候给外部bean进行了属性设置):
<bean id="emp" class="wqy.spring5.bean.emp">
<property name="name" value="YangGer"></property>
<property name="gender" value="Man"></property>
<property name="dept" ref="dept"></property>
</bean>
<bean id="dept" class="wqy.spring5.bean.dept">
<property name="name" value="卡密"></property>
</bean>
②相比①多了一个prooerty标签,其中name采用xxx.属性的形式赋值
<bean id="emp" class="wqy.spring5.bean.emp">
<property name="name" value="YangGer"></property>
<property name="gender" value="Man"></property>
<property name="dept" ref="dept"></property>
<property name="dept.name" value="卡密部门"></property>
</bean>
<bean id="dept" class="wqy.spring5.bean.dept">
<property name="name" value="卡密"></property> //被修改为卡密部门
</bean>
注入集合属性(String[] list map set)
集合属性的注入方法也大体相同:在property标签中先使用一个类似于标识身份的标签(String[] 使用array or list list使用list map使用map set使用set),再在该标签中赋值:非键值对采用value标签,键值对采用entry标签,在entry标签内部再对key和value进行赋值
在集合里面设置对象类型值
先创建对象,再用ref标签将bean引入property即可
<bean id="course1" class="wqy.spring5.bean.course">
<property name="name" value="C++"></property>
</bean>
<bean id="course2" class="wqy.spring5.bean.course">
<property name="name" value="Python"></property>
</bean>
<bean id="stu2" class="wqy.spring5.bean.stu">
<property name="courses">
<list>
<ref bean="course1"></ref>
<ref bean="course2"></ref>
</list>
</property>
</bean>