Bean配置
1. 通过xml文件进行配置
<bean id="hello"class="com.spring.pojo.Sys_user"><!-- 默认会调用java类的无参构造 -->
<property name="username"value="Spring"></property>
</bean>
id:标识容器中的bean,唯一
class:bean的全类名获取bean(反射),bean的类中必须要有无参构造
2.Spring容器:
//1.创建spring的IOC容器
ApplicationContextctx=new ClassPathXmlApplicationContext("ApplicationContext.xml");
//2.从IOC容器中获取bean
user=(Sys_user) ctx.getBean("hello");
在SpringIOC容器中读取Bea配置之前,首先要创建ioc容器,只有创建类容器才能在容器中获取bean。
Spring提供类两种类型的IOC容器实现。
-BeanFactory :ioc容器的基本实现
-AppliacationContext:提供更多的特性,是BeanFactory的子接口。
—BeanFactory是spring框架的基础设施,面向Spring本身。
ApplicationContext是面向Spring框架发热开发者,几乎所有的应用场合都直接使用ApplicationContext而不是BeanFactory。
-无论使用那种方式配置容器,配置文件都是相同的
3.ApplicationContext:
主要实现类:
a. ClassPathXmlApplicationContext 从类路径中加载配置文件。
b. ConfigurableApplicationContext 从文件体系中加载配置文件
ConfigurableApplicationContext扩展与ApplicationContext新增了refresh()和close(),让ApplicationContext 具有启动、刷新、关闭的功能;
ApplicationContext在初始化的时候加载所有单例的bean.
WebApplicationContext是为web应用准备的,它允许从相对WEB根目录路中完成初始化工作
4.GetBean
在BeanFactory的接口中定义,可以根据id获取,也可以根据类型获取(类型要位置)
5.依赖注入:
属性注入:使用<property>元素,name指明属性名称,value指明属性值
构造注入:<constructor-arg>元素,value指明构造函数中属性的值。可以根据构造函数中参数的顺序和类型区分重载。Index 、type
如果属性值包含特殊字符可以使用<!CDATA[属性值]>
使用ref属性配置bean之间的引用关系
<bean id="car" class="com.spring.pojo.Car">
<constructor-arg>
<value>@GALA</value>
</constructor-arg>
<constructor-arg value="lk1019"></constructor-arg>
<constructor-arg value="15.6"></constructor-arg>
</bean>
<bean id="hello"class="com.spring.pojo.Sys_user"><!-- 默认会调用java类的无参构造 -->
<property name="username"value="Spring"></property>
<property name="car"ref="car"></property>
</bean>
也可以使用内部bean直接设置引用的bean的属性
<null/>null值
Spring支持级联属性赋值
<property name="car.carname"value="Spring"></property>(但是一定要有set方法,并且需要先初始化化才可以为级联属性赋值)
5.集合属性
在Spring中可以通过内置的xml标签(<list/>,<set/>,<map>)来配置集合属性。,都是在property元素下的。
配置java,util.List类型的属性,需要指定,list标签,在标签中包含一些元素。这些标签可以通过<value>指定简单的常量值,通过<ref>指定其他Bean的引用。
<list name=""ref=""></list>
Map集合(也支持内部bean)
<map name="map属性">
<entry key="key1"value-ref=""></entry>
<entry key="key2"value-ref=""></entry>
</map>
properties集合属性(字典)
<props>
<prop key="user">root</prop>
<prop key="password">123456</prop>
</props>
配置独立的集合bean,为多个bean提供给,需要导入util命名空间
使用p命名空间,可以更加简洁