目录
什么是IOC
IOC Inversion of Control 控制反转
DI Dependency Injection 依赖注入
DI是IOC的实现
控制反转的意思是我们不再显示的创建对象,而是通过spring来创建对象
让Spring来控制对象的创建,让别人帮你干,自己懒得干
消除new对象,解耦合,解决硬编码问题,从此走上不归路。。。
IOC容器
摘自Spring官网
The
org.springframework.beans
andorg.springframework.context
packages are the basis for Spring Framework’s IoC container. TheBeanFactory
interface provides an advanced configuration mechanism capable of managing any type of object.ApplicationContext
is a sub-interface ofBeanFactory
.
Spring中提供了两种IOC容器:
- BeanFactory (
spring-beans
) - ApplicationContext (
spring-context
)
ApplicationContext在BeanFactory的基础上构建,是相对比较高级的容器实现,功能更强大
简述 IOC启动过程
加载xml配置文件或扫描JavaConfig,把bean以BeanDefinition的形式统一放在一个map里缓存起来
需要使用该bean,向map取来Class实例化并注入
依赖注入方式
简单来说:
- 接口注入
- 构造函数注入
- setter 注入
从另一个角度:
- javaEE
JNDI(Java Naming And Directory Interface)
- 依赖注入(Dependency Injection)
- 依赖查找(Dependency lookup)
- 在Spring中 @Autowired
- 在java中 @Resource
- 在java EE中 @Inject
有点乱,嘿嘿,记住@Autowired就行,最常用的,他就是依赖注入的具体使用
比如在controller @Autowired service,service @Autowired dao
Spring Bean
Bean由Spring IOC容器实例化
配置方式:
- xml
<bean></bean>
- 注解配置
(1)Spring: xml需配置
<beans> <context:annotation-config/> </beans>
(2)Spring Boot : JavaConfig 主流
@Bean + @Configuration
那么xml的配置我们需要学习嘛,我觉得还是需要的
Bean Scop
- Singleton – 每个 Spring IoC 容器仅有一个单 Bean 实例 (默认)
- Prototype – 每次请求都会产生一个新的实例。
- Request – 每一次 HTTP 请求都会产生一个新的 Bean 实例,并且该 Bean 仅在当前 HTTP 请求内有效。
- Session – 每一个的 Session 都会产生一个新的 Bean 实例,同时该 Bean 仅在当前 HTTP Session 内有效。
- Application – 每一个 Web Application 都会产生一个新的 Bean ,同时该 Bean 仅在当前 Web Application 内有效。
大多都是默认配置即可,就算真用的也只有Prototype
其他三个了解即可
转载请注明:汪明鑫的个人博客 » Spring必知必会 IOC理论
说点什么
您将是第一位评论人!