IOC接口Bean属性注入XML
一:什么是Bean管理:
-
Bean管理指的是;两个操作:
-
Spring创建对象
-
Spring注入属性
二:基于XML方式创建对象
<bean id="user" class="com.spring_test.User"></bean>
1)在配置文件中,使用bean标签,标签里面添加对应属性,就可以实现对象的创建
2)bean中常用的属性:
-
id属性:唯一标识,就是你创建的对象名是什么,id就填什么
-
class属性:类全路径(包含类路径)
-
name属性:其实跟id一样,就是name可以添加一些特殊符号
-
注意:创建对象的时候,默认也是执行无参数构造方法创建的
三:基于XML方式注入属性:
(1)DI:依赖注入,就是注入属性
1)第一种注入方式:使用set方法注入,在XML中使用property完成对属性的注入,依次类推,举一反三
Book类:
public class Book{ private String bname; public void setBname(String bname){ this.bname=bname; } }
xml配置注入以及创建:
<!--创建Book对象创建--> <bean id="book" class="com.spring_test"> <!--使用property完成属性注入 name:类里面属性名称 value:向属性注入的值 --> <property name="bname" value="hanxiao"></property> </bean>
注意:如何获取配置创建的对象
Book book=content.getBean("book",Book.class); //这里是将Bean返回后的对象转换程class的形式
2)第二种注入方式:通过有参构造进行XML注入
也就是在上面的Book中加一个带有参数的构造函数就好了
<bean id="book" class="com.spring_test"> <!-- 比如这里有只有一个有参构造,注入dname 使用constructor-arg标签来获取有参构造的参数以及注入的值 name:构造函数中的属性名称 index:有参构造中参数的个数次序 value:属性名称的值 下面这两句话是等效的 --> <constructor-arg name="dname" value="myname"></constructor-arg> <constructor-arg index="1" value="myname"></constructor-arg> </bean>
3)
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <!--这一步就是进行了一个对p的约束声明--> xmls:p="http://www.w3.org/2001/XMLSchema-instance/p" <!--然后就可以在bean创建对象的时候在后面直接传入参数就好--> <bean id="hello" class="com.spring_test.Hello" p:bname="hanxiao"></bean> </beans>
主要步骤:在约束声明中加上对p的声明,然后再创建的对象后面使用p:参数=“参数值”
补充重点:**传递参数若带特殊符号:**
也已使用CDATA方法在配置文件XML中来传递
<property name="address"> <value> <![CDATA[<<南京>>]]> </value> </property>