spring笔记

4 篇文章 0 订阅
3 篇文章 0 订阅

持续更新中…
记录一些学习spring过程中的东西,随时查阅,以免自己遗忘

IoC

IOC控制反转:(对象的创建控制权由程序转移到外部,这种思想称为控制反转)
	使用对象的时候,由主动new产生对象转换为由外部提供对象,这个过程中对象创建控制权由程序转移到外部,这种思想称之为控制反转

spring技术对ioc思想进行了实现
	在spring框架中,由主动new产生对象转换为由ioc容器提供对象
	ioc容器负责对象的创建,初始化等一系列工作,被创建或者被管理的对象在ioc容器中统称为Bean

DI:依赖注入


在容器中建立两个bean之间的依赖关系的整个过程,称为依赖注入。

目标:充分解耦
	实现过程
	使用ioc容器管理bean
	在ioc容器中将有依赖关系的bean进行关系绑定

最终效果:
	适用对象时不仅可以直接从ioc容器中获取,并且获取到的bean已经绑定了所有的依赖关系


bean默认为单例:
	适合交给容器进行管理的bean:
		表现层对象(servlet)、
		业务层对象(service)、
		数据层对象(dao)、
		工具对象
	不适合交给容器进行管理的bean:封装实体的域对象

bean实例化:bean本质上是对象,创建bean使用构造方法完成

beans实例化的三种方式:
	构造方法(常用)
	静态工厂(了解)
	实例工厂(了解):
		factoryBean(实用)

bean生命周期

	初始化容器
		1.创建对象(内存分配)
		2.执行构造方法
		3.执行属性注入(set方法)
		4.执行bean初始化方法
	使用bean
	关闭/销毁容器:(程序全部执行完成,jvm虚拟机会关闭,容器还没有来得及关闭,因此不会执行destroy方法)
		手动关闭容器:
			close()
		注册关闭钩子,虚拟机推出之前先关闭容器然后再退出虚拟机:
			registerShutdownHook()

依赖注入

向一个类中传递数据的依赖注入方式:
	1.setter注入---<property>
		简单类型
			value
		引用类型
			ref
		集合
			List
			Set
			Map
			Property
	2.构造器注入----<constructor-arg>
		简单类型
		引用类型

依赖注入方式选择:
	1.强制依赖使用构造器注入,使用setter注入有概率不进行注入导致null对象出现
	2.可选依赖使用setter注入进行,灵活性强
	3.Spring框架倡导使用构造器,第三方框架内部大多数采用构造器注入的形式进行数据初始化,相对严谨
	4.如果有必要可以两者同时使用,使用构造器注入完成强制依赖的注入,使用setter注入完成可选依赖的注入
	5.实际开发中可要根据实际情况分析,如果受控对象没有提供setter方法就必须使用构造器注入
	6.自己开发的模块推荐使用setter注入

自动装配

IoC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配
	autowire=
	自动装配方式:
		按类型(常用):byTyoe
		按名称:byName
		按构造方法
		不启用自动装配

依赖自动装配特征:
	自动装配用于引用类型依赖注入,不能对简单类型进行操作
	使用按类型装配时,(byType)必须保障容器中相同类型的bean唯一,推荐使用
	使用按名称装配时,(byName)必须保障容器中具有指定名称的bean,因变量名与配置耦合,不推荐使用
	自动装配优先级低于setter注入与构造器注入,同时出现时自动装配失效

加载properties文件:
	开启context命名空间
	使用context命名空间,加载指定properties文件
	使用${}读取加载的属性值

不加载系统属性
	<context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>

容器:

创建容器
	获取bean
	容器类层次结构
	BeanFactory:是IoC容器的顶层接口,初始化Bean Factory对象时,加载的bean延迟加载
	ApplicationContetxt接口时Spring容器的核心接口,初始化时bean立即加载
	ApplicationContext接口提供基础的bean操作相关方法,通过其他接口扩展其功能
	Application Context接口常用初始化类:
		ClassPathXmlApplicationContext
		FileSystemXmlApplicationContext

注解开发

核心配置文件中通过组件扫描加载bean
	<context:component-scan base-package="com.xxx"/>

到了spring3.0升级了纯注解开发,使用Java类替代了配置文件,开启了spring快速开发时代
配置文件结构转换成@Configuration,用于设置当前类为配置类
配置文件中的扫描换成了@ComponentScan("com.xxx"),用于设定扫描路径,这个注解只能添加一次,多个数据可以用数组格式
读取Spring核心配置文件初始化容器对象切换为读取Java配置类初始化容器对象AnnotationConfigApplicationContext

bean作用范围
	@Scope
bean的生命周期
	@PostConstruct
	@PreDestroy

依赖注入

注入引用类型:
	自动装配@Autowired引用类型注入 @Qualifier指定注入的bean的id
		自动装配基于反射设计创建并暴力反射对应属性为私有属性初始化数据,因此无需提供setter方法
		自动装配建议使用无参构造方法创建对象(默认),如果不提供对应构造方法,请提供唯一构造方法

注入简单类型
	@Value

加载外部配置文件properties文件:使用@PropertySource注解加载properties文件。枯井只支持单一文件配置,多文件配置需要使用数组格式配置,不允许使用通配符*

第三方bean管理:@Bean配置第三方,返回值就是bean
	使用独立的配置类管理第三方bean以后,将独立的配置类加入核心配置类
		方式一:导入@Import({}) @Import只允许写一次,多个数据要用数组格式
		方式二:扫描式@ComponentScan(不推荐)

	 第三方bean依赖注入:引用类型注入只需要为bean定义方法设置形参即可,容器会根据类型自动装配对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值