1.Spring中的Ioc操作:
将对象的创建交由Spring框架进行管理。
IoC操作分为:IoC配置文件方式和IoC的注解方式。
Ioc入门案例:
《1》.导入jar包
《2》创建实体类
《3》配置Spring config.xml文件
《4》测试
2.Spring的Bean管理
Bean实例化的方式
在Spring中通过配置文件创建对象。
Bean实例化三种方式实现:
(1)使用类的无参数构造创建,如:
<bean id="user"class=“com.wm103.ioc.User”>
(2)使用静态工厂创建
如果一个Bean不能通过new直接实例化,而是通过工厂类的某个静态方法创建的,需要把的class属性配置为工厂类。如:
<bean id="user"class=“com.wm103.ioc.UserFactry” factorymethod=“createInstance”>
(3)使用实例工厂创建
如果一个Bean不能通过new直接实例化,而是通过工厂类的某个实例方法创建的,需要先配置工厂的标签,然后在需要创建的对象的bean标签的factory-bean属性配置为工厂类对象,factory-method属性配置为产生实例的方法。
<bean
id="userFactory"class=“com.wm103.ioc.UserFactory”
<bean id="user"factorybean="userFactory"factorymethod=“createInstance”>
Bean标签的常用属性
(1)id属性:用于指定配置对象的名称,不能包含特殊符号。
(2)class属性:创建对象所在类的全路径。
(3)name属性:功能同id属性一致。但是在name属性值中可以包含特殊符号。
(4)scope属性
singleton:默认值,单例
单例模式下,在程序下只有一个实例。非单态模式下,每次请求该Bean,都会生成一个新的对象。
prototype:多例
request:创建对象后将对象存放到request域
session:创建对象后将对象存放到session域
globalSession:创建对象后将对象存放到globalSession域
属性注入
属性注入指创建对象时,向类对象的属性设置属性值。
在Spring框架中支持set方法注入和有参构造函数注入,即创建对象后通过set方法设置属性或采用有参构造函数创建对象并初始化属性。
使用有参构造函数注入属性
案例:
Student.java 提供有参的构造方法
bean的配置:
创建Student对象进行测试:
使用set方法注入属性
案例:
Teacher.java 提供属性的set方法
bean的配置:
创建Teacher对象进行测试:
注入对象类型属性
以三层架构中的service层和dao层为例,为了让service层使用dao层的类创建的对象,需要将dao对象注入到service层类中。具体实现过程中如下:
(1)创建service类、dao层接口、dao类,如下:
UserService.java
UserDao.java
UserDaoImpl.java
(2)在配置文件中注入关系,如下:
(3)创建测试方法进行测试,如下:
p名称空间注入属性
之前提到了一种set方法的属性注入方式,这里将介绍另一种属性注入的方式,名为 p名称空间注入。对比set方法的属性注入方式,核心配置文件配置修改如下:
注入复杂类型属性
对象注入复杂类型属性,如数组、List、Map、Properties。
案例:
PropertyDemo.java
bean配置文件,内容如下:
创建PropertyDemo对象进行测试:
IoC和DI的区别
IoC,控制反转,将传统的对象创建流程转变为交由框架进行创建和管理。在Spring中,对象的创建交给Spring进行配置。它包括依赖注入。
DI,依赖注入,向类的属性设置值。
IoC与DI的关系:依赖注入不能单独存在,需要在IoC基础之上完成操作。