微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

【Java高级工程师蜕变之路】010 Spring IOC源码分析

实现说明

image

beanfactory与ApplicationContext的区别

beanfactory是整个Spring框架中IOC容器的顶层接口,主要定义容器的基本规范,ApplicationContext是beanfactory的子接口,具备beanfactory的所有功能

一般称beanfactory为IOC的基础容器,ApplicationContext是容器的高级接口,有更多功能,比如国际化、资源访问等

image

纯XML模式

bean实例化的三种方式

方式一:无参构造器(推荐)

<bean id="connectionUtils" class="com.test.transfer.utils.ConnectionUtils"></bean>

方式二:静态方法

<bean id="connectionUtilsstatic" class="com.test.transfer.utils.createConnectionFactory" factory-method="getInstanceStatic"/>

方式三:实例化方法

<bean id="createConnectionFactory" class="com.test.transfer.utils.createConnectionFactory"/>
<bean id="connectionUtilsInstance" factory-bean="createConnectionFactory" factory-method="getInstance"/>

bean的作用范围和生命周期

scope:定义bean的作用范围(认为singleton)

Singleton:单例,IOC容器中只有一个对象

单例模式对象的生命周期与容器相同

prototype:原型,每次请求都是新对象

多例模式Spring只负责创建,不负责销毁

request

session

application

websocket

bean的属性

id

class

name

factory-bean

factory-method

scope

init-method:初始化方法,必须是无参方法

destroy-method:对象销毁前执行,只有在scope为sington的时候有效

DI的依赖注入方式

set注入

使用property标签,注入bean使用ref,注入普通值用value

构造器注入

使用constructor-arg标签属性主要使用index/name,ref,value

复杂类型

array:array子标签,value/ref

map:map子标签,entry->key/value

set:set子标签

Properties:props子标签,prop->key

xml与注解相结合模式

纯xml很少使用

引入注解不需要额外的jar

IOC容器的启动仍然从加载xml开始

使用规则:

第三方使用xml,自定义使用注解

@Autowired

@Qualifier(Autowired无法区分类型的时候结合Autowired,用于区分具体是注入那个类型)

@Resource(jdk11已经移除,需要引入javax.annotaton-api包使用)

纯注解模式

@Configuration:标记为配置类

@CommonentScan:替代context:component-scan

@PropertySource:引入外部资源文件

@Import引入其他配置类

@Value:变量赋值

@Bean:自定对象注入到IOC容器

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。