基于xml配置文件实现bean管理

1、setter注入方式

(1)首先在你要创建的对象中添加对应属性的set方法如图:

image.png

(2)在spring配置文件中进行配置相关的属性。


-- 1、在spring配置文件中,使用bean标签,标签里面添加对应的属性,就可以实现对象的创建。
-- 2、在bean里面有很多的属性
   id :唯一标识
   class : 要创建的对象的全路径,默认是执行无参构造方法来创建对象,后面来讲解如何创建有参构
<bean id = "book" class="book类的全路径">
     -- name :要创建的类中的属性
     -- value :给属性注入的具体值
    <property name = "bname"  value = "红楼"></property>
    <property name = "bauthor" value= "老曹"></property>       --   这里是给基本的属性赋值 和string  不是集合
</bean>

-- 以下是简化setter的注入 -- p名称的注入
1、在配置文件中添加p名称空间
<beans xmlns:p="http://www.springframework.org/schema/p">
2、进行属性注入
<bean id = "book" class="book类的全路径" p:banme = "value"  p:author = "value">
</bean>

复制代码

2、通过有参构造完成

(1)创建类、定义属性、创建有参构造方法

image.png

(2)配置xml文件

<bean id = "order" class = "order类全路径">
		<constructor-org name = "属性名1" value= "属性值"></constructor-org>
		<constructor-org name = "属性名2" value= "属性值"></constructor-org>
</bean>
复制代码

3、注入其他属性(字面量,集合,对象)

(1)字面量

①null值

<property name = "address">   -- 如果想给address属性赋值为null
	<null/>
</property>
复制代码

②属性中包含特殊符号(使用转义或者CDATA)

<property name = "address">   -- 如果想给address属性赋值为null
	<value><![CDATA[nanjing]]></value>
</property>
复制代码

(2)注入外部bean

①创建两个类 UserService和UserDao 此UserService

image.png

②配置xml文件

-- 这里需要创建两个对象 UserService 和UserDao  因为UserDao为接口,所以用他的实现类
<bean id = "userService" calss = "userService类的全路径">
	<property name = "userDao" ref = "userDaoImpl"></property>
</bean>

<bean id = "userDaoImpl" calss = "userDaoImpl类的全路径">
</bean>
复制代码

(3)注入内部bean和级联赋值

<bean id = "userService" class="com.glp.UserService">
	<property name = "userDao">
		<bean id = "userDao" class="com.glp.UserDao">
			<property name = "username" value="glp"></property>
		</bean>
	</property>
</bean>
复制代码

级联赋值(和外部Bean有些区别,在引入外部Bean的同时,给外部Bean设置了属性。)

<bean id = "userService" class="com.glp.UserService">
	<property name = "userDao" ref="userDao"></property>
</bean>

<bean id = "userDao" class="com.glp.UserDao">
	<property name = "username" value="glp"></property>
</bean>
复制代码

(4)注入集合

①注入数组类型属性

<bean id = "stu" class = "要创建的类的全路径">
	<property name = "course为数组类型">
		<array>
			<value>java</value>
			<value>oracle</value>
		</array>
	</property>
</bean>
复制代码

②注入list集合

<bean id = "stu" class = "要创建的类的全路径">
	<property name = "course为list类型">
		<list>
			<value>java</value>
			<value>oracle</value>
		</list>
	</property>
</bean>
复制代码

③注入map集合 类型

<bean id = "stu" class = "要创建的类的全路径">
	<property name = "course为map类型">
		<map>
			<entry key = "" value = ""></entry>
			<entry key = "" value = ""></entry>
		</map>
	</property>
</bean>
复制代码

④set集合

<bean id = "stu" class = "要创建的类的全路径">
	<property name = "course为list类型">
		<set>
			<value>java</value>
			<value>oracle</value>
		</set>
	</property>
</bean>
复制代码

4、两个细节

1、集合中的类型是对象

-- 其实就和前面引入对象的差不多的,要学会举一反三哦
<bean id = "stu" class = "要创建的类的全路径">
	<property name = "course为list类型">
		<list>
			<ref bean = "course1"></value>
			<ref bean = ""></value>
		</list>
	</property>
</bean>

<bean id = "course1" class = "要创建的类的全路径">
	<property name = "" value = ""></property>
</bean>
复制代码

2、使集合可以供别的类使用

<util:list id = "bookList">
	<value>1</value>
	<value>2</value>
	<value>3</value>
</util>
<bean id = "course1" class = "要创建的类的全路径">
	<property name = "list" ref= "bookList"></property>
</bean>
复制代码

5、普通bean和工厂bean

1、普通: 定义的是什么类型,返回的就是什么类型

 就是在xml文件中<bean class=""></bean>  class类型,定义的什么,当你在使用getBean调用的时候它生成的就是什么类型的。
复制代码

2、工厂: 定义的返回的是不一样的

1、创建类,让这个类作为工厂bean,时间接口FactoryBean

2、实现接口里面的方法,在实现方法中定义返回bean的类型,

这里返回的是Course

image.png

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享