控制反转ioC 是一种 设计思想 DI(依赖注入) 是实现IoC的一种方法 使用面向对象编程 对象的创建与对象间的依赖关系完全硬
编码在程序中 对象的创建由程序自己控制 控制反转后将对象的创建转移给第三方 个人认为所谓的反转就是 获得依赖对象的方式反转
Spring 容器在初始化时 先读取配置文件 根据配置文件或元数据与组织对象存入容器中 程序使用时 再从IoC容器中去除需要的对象
采用XML方式配置Bean的时候 Bean的定义信息是和实现分离的 而采用注解的方式 可以把二者合为一体 Bean的定义信息
直接以注解的形式定义再实现类中 从而达到了零配置的目的
控制反转是一种通过描述(XML或注解) 并通过第三方生产获取特定对象的方式 再Spring中实现控制反转的是IoC容器
其实现方法是依赖注入
对象是由spring创建的
反转 : 程序本身不创建对象的 而变成被动的接收对象
依赖注入 就是利用set方法来进行注入的
IOC是一种编程思想 由主动的编程编程被动的接收
对象有SPring 创建 管理 分配
再配置文件加载的时候 容器中管理的对象就已经被初始化了
Spring容器中 所有的对象再被第一次获取的时候 就被实例化了
即所有的对象对
user == user1 输出true;
使用无参构造方法 创建对象 默认!
使用有参构造创建对象
下表赋值类型赋值 直接通过参数名来设置
ioC入门案例 制作步骤
-
导入spring坐标(5.1.9.release)
-
编写业务层与表现层
-
建立spring配置文件
-
配置所需资源(Service)为spring控制的资源 表现层(App) 通过spring获取资源
bean
定义spring中的资源 受此标签定义的资源将受到Spring控制
格式
基本属性
id bean的名称 通过id获取bean class bean的类型 name bean的名称 可以通过name值获取bean 用于多人配合给bean起别名
bean属性scope
定义bean作用的范围
取值
singleton: 设定创建出的对象保存在spring容器中 是一个单例的对象
prototype 设定创建出的对象保存阿紫spring容器中 是一个非单例的对象
request session application websocket 设定创建出的对象放置在web容器对应的位置
在单例情况下 在加载spring容器的时候 就会进行创建对象
bean生命周期
init-method destory-method
属性 bean标签 定义bean对象在初始化或销毁时完成的工作取值 bean对应的类中对应的具体方法名
当spring配置的时非单例对象的时候 该对象不归spring容器管理
init-method 与 destory-method 用于控制bean的生命周期
bean对象创建方式
factory-bean factory-method
定义bean对象创建方式 使用实例工厂的形成创建bean 兼容早期遗留系统的升级工作
取值 工厂bean中用于获取对象的实例方法名 注意事项 使用工厂创建bean首先需要将实例工厂配置bean 交由spring进行管理 factory-bean 是实例工厂的bean
DI
IOC
控制翻转 Spring 反向控制应用程序所需要使用的外部资源
DI
依赖注入 应用程序运行依赖的资源由于Spring为其提供 资源进入应用程序的方式称为注入
应用程序 引用spring提供的资源
ioc模式 等待Spring容器提供资源 DI ioc容器 主控权在spring手中ioC
ioc配置
set注入(主流)
使用set方法的形式为bean提供资源
基本属性
name 对应bean中的属性名 要求该属性必须提供可以访问的set方法
value 设定非引用类型属性对应的值 不能与ref同时使用
ref 设定引用类型对应bean的id 不能与value同时使用
在使用引用类型的时候用ref 在其他方式引用的时候 用value
构造器注入
construct-arg
使用构造方法的形式bean提供资源 兼容早期遗留系统的升级工作
基本属性
name 对应bean的构造方法所携带的参数名
value 设定非引用类型构造方法参数对应的值 不能与ref同时使用
一个bean可以有多个construct-arg标签
集合类型数据注入
array list set map props
注入集合数据类型属性
properties文件
外部文件导入
Spring 提供了读取外部properties文件的机制 使用读取到的数据bean属性赋值
*** 作步骤
准备外部properties文件 开启context命名空间支持 xmlns : context ="http://www.springframework.org/schema/contxt" 加载指定的properties文件使用加载的数据
如果需要加载所有的properties文件 可以使用 *,properties 表示加载所有的properties文件
读取数据使用${propertiesName} 格式进行 其中 propertieName 值1properties 文件的属性名
ioC配置
import
在当前配置文件中导入其他配置文件中的项
基本属性
resource 加载配置文件名
spring容器加载多个配置文件
new ClassPathXmlApplicationContext(“config.xml” , config2.xml);
Spring 容器中的bean定义冲突
同id的bean 后定义的覆盖先定义的
导入配置文件可以理解为将导入的配置文件复制粘贴到对应位置
导入配置文件的顺序与位置不同可能会导致最终程序运行结果不同
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)