栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring框架-day03控制翻转(IOC)和依赖注入(DI)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring框架-day03控制翻转(IOC)和依赖注入(DI)

APP直接依赖资源,这样APP会无法独立,耦合度太强

IOC如图所示:APP将直接寻找资源的权利交给工厂,通过工厂对象进行资源的整合,以此减少程序间的耦合度

IOC的概念:
	控制反转,把创建对象的权利交给框架,是框架的重要特征,
	并非面向对象编程的专用术语,它包括依赖注入(Dependency Injection)
	和依赖查找(Dependency Lookup)
IOC作用:
	削减计算机程序的耦合度(尽量减少我们代码中的依赖关系)

使用Spring的IOC解决程序耦合(IOC的唯一作用)

	目的:使用spring解决依赖关系,并不是正真的要CRUD,所以没必要写实体类,用模拟即可。
	并且使用的是java工程,并非javaWeb,
	也没必要写JavaBean

步骤:
	1.准备spring的依赖开发包(jar包)
	2.创建配置文件,导入xml 约束
	3.把对象的创建交给spring来管理

jcl是阿帕奇的日志,beans spel context core是核心容器相关的jar
aop是注解相关的jar

CoreContainer是一个Map,类似BeanFactory中,存储单例对象的Map

步骤1 准备spring的依赖开发包(jar包):

步骤2 创建配置文件,导入xml 约束:
步骤3 把对象的创建交给spring来管理:

获取核心容器ApplicationContext,根据id获取Bean对象

ApplicationContext的三个常用实现类
	ClassPathXmlApplicationContext:它可以加载类路径下的配置文件,
	配置文件必须在类路径下,不在的加载不了
	FileSystemXmlApplicationContext:可以加载磁盘任意路径下的
	有访问权限的配置文件
	AnnotationConfigApplication:用于读取注解创建容器


IAccountService与IAccountDao两个的实现类的打印地址

ApplicationContext与BeanFactory的区别:

ApplicationContext:单例对象适用,因为只创建一个对象
(也可以在配置文件中选用多例的策略创建对象)
	在构建核心容器时,创建对象采取的策略是采用立即加载的方式,
	只要一读取完配置文件,马上就创建配置文件中的配置的对象

BeanFactory:多例对象适用,因为对象不一样,
所以什么时候用什么时候创建
	在创建核心容器时候,采取的是延迟加载的方式,即什么时候根据
	id获取对象,什么时候创建对象

spring对bean的管理细节

    1.创建bean的三种方式
    2.bean对象的作用范围
    3.bean对象的生命周期

1.Bean创建的第一种方式:

	使用默认构造函数创建在spring的配置文件中使用bean标签,
	配以id和class属性后,且没有其他属性和标签时。
	采用的就是默认构造函数创建bean对象,
	此时如果类中没有默认构造函数,则对象无法创建。

xml配置:

类的代码(含默认构造):对象创建,代码正常运行

类的代码(不含默认构造):对象无法创建,程序报错

2.Bean创建的第二种方式:

使用普通工厂中的方法创建对象(使用某个类中的方法创建对象,
并存入spring容器)

xml配置:

类中的代码:

3.Bean创建的第三种方式:

xml配置:
类中的代码:

Bean的作用范围:

bean标签的scope属性:
	作用:用于指定bean的作用范围
	取值:常用的就是单例的和多例的
		singleton:创建单例对象(默认值)
		prototype:创建多例对象
		request:作用于web应用的请求范围
		session:作用于web应用的会话范围
		global-session:作用于集群环境的会话范围(全局
		会话范围),不是集群环境时,它就是session

集群环境(多台服务器)中的global-session

单例配置及代码如下:

多例配置及代码如下:

Bean对象的生命周期

	单例对象:
		出生:当容器创建时,对象出生
		存活:只要容器还在,对象一直活着
		死亡:容器销毁,对象销毁
		总结:单例对象的生命周期和容器相同

配置及代码如下:

	多例对象(懒加载):
		出生:当我们使用对象时候,spring框架为我们创建
		存活:对象使用过程中就活着
		死亡:当对象长时间不用,且没有别的
		对象引用时,由Java的垃圾回收器回收

代码:单例模式的代码配置中,更改scope为prototype

依赖注入:

依赖注入:Dependency Injection
IOC:降低程序的耦合(依赖关系)
依赖关系的管理:
	1.交给spring来维护
	2.在当前类需要用到其他类的对象,由spring为我们
	提供,我们只需要在配置文件中说明。
	3.依赖关系的维护:就称之为依赖注入
	4.依赖注入:
		能注入的数据有3类:
			基本类型和String
			其他bean类型(在配置文件中或注解配置过的bean)
			复杂类型/集合类型
		注入的方式:有三种
			一:使用构造函数提供
			二:使用set方法提供
			三:使用注解提供

方式一,使用构造函数提供代码如下:

注:下方代码中没有了默认构造,在配置文件
中创建bean放入spring容器之前,必须
先将参数的值注入bean对象


方式二,使用set方法提供代码如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/643427.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号