个人理解:简单来说,依赖注入 类比 hibernate的二级缓存。 把东西(hibernate-数据【hashmap】,DI-类)集中放进一个容器(内存)中 ,方便其他(hibernate—QL语句、DI—类)使用。
这样hibernate取数据时先从二级缓存找,减少访问数据库,提高效率。某个类依赖注入后,就不用通过new个对象(保存内存堆中)来使用它,直接通过注解从容器中获取,方便管理(使用)对象。
自动扫描
<context:component-scan base-package="com.ssm"/> (多个包用逗号隔开)
表明com.ssm包及其子包中,如果某个类的头上带有特定的注解
@Component,@Repository,@Service,@Controller,就会将这个对象作为Bean注入进Spring容器。
IOC-反转控制(DI-依赖注入)自我理解
spring配置文件中扫描注解把Bean注入IOC容器。
需要哪个对象从IOC容器取,然后赋值(注入)。(spring 常用注入方式:属性注入)
把初始化的数据放入配置文件中,通过注解匹配对应的bean赋值。
IOC:(通过代理(中介)获取对象或其属性)不需通过程序代码实例化对象。把对象当成bean注入IOC容器。需要什么对象,通过注解从容器获取。
DI:初始化(赋值)。
依赖注入和控制反转是对同一件事情的不同描述,从某个方面讲,就是它们描述的角度不同。依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。
IOC:
实现反转控制,实现代码解耦。
不需要编码实例对象,而把对象直接放入到 IOC容器中。需要用到某些对象或其属性直接从IOC容器通过注入的方式获取。
使用注解代替配置文件(预编译报错问题)来注入属性,解耦,方便管理。
DI:
IOC容器类似于颜料盒(放置所有颜料的地方),当我们需要画一幅画(实现某些功能),要先用调色板从颜料盒中取所需的颜料(类中注入对象或其属性)。
个人理解:简单说,依赖注入 类比 hibernate的二级缓存(把东西(hibernate-数据【hashmap】,DI-类)集中放进一个容器(内存)中),方便其他(hibernate—QL语句、DI—类)使用。
这样hibernate取数据时先从二级缓存找,减少访问数据库,提高效率。某个类依赖注入后,就不用通过new个对象(保存内存堆中)来使用它,直接通过注解从容器中获取,方便管理(使用)对象。