SPRING源码系列 - IOC容器
spring - IOC概述
在讲spring ioc给大家看下这张图(来源spring解密), 整个spring框架就像图中的树,IOC容器为树干,从IOC上引申出AOP,JMX,SPRING MVC,ORM框架。spring里大部分组件都依赖于IOC,也就是spring和核心。我们从名字上来看,IOC英文Inversion Of Control ,又叫控制反转,也叫依赖注入(Dependency Injection)。将框架的控制权交给spring容器来管理。
通常情况下,被注入对象会直接依赖于被依赖对象,当使用时需要的时候,只需要“说”一下。就像你吃饭的时候只要手机上点个单,饭就自己做好送过来了。而在代码中的体现就是想用的话@Autowired注入一下,而不需要自己手动new 一个出来。“”说“”的方式有几种呢?这就涉及到IOC的注入方式了。
IOC注入方式
IOC注入方式有三种接口注入、构造器注入、setter注入以及最常用的注解注入。
为什么我们会了最简单的@Autowired注入也就是常说的注解注入还要去学习其他注入方式呢?因为在现实开发场景中会遇到各种各样的问题,比如(websockt对象自动注入失败),这个时候用@Autowired普通注入 就会失败 ,等我们全部学习完在回过头来看一看失败的原因以及解决办法。
- 构造器注入
我们分别用xml方式与@Autowired方式来实现bean的注入。
<!-- 注册userService -->
<bean id="userService" class="com.lyu.spring.service.impl.UserService">
<constructor-arg ref="userDaoJdbc"></constructor-arg>
</bean>
<!-- 注册jdbc实现的dao -->
<bean id="userDaoJdbc" class="com.lyu.spring.dao.impl.UserDaoJdbc"></bean>
public class UserService implements IUserService {
private IUserDao userDao;
public UserService(IUserDao userDao) {
this.userDao &#