什么是spring
spring是一个开放源代码的设计层面框架 ,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。
为什么要使用spring:
1:spring的aop支持一些事务、日志等进行集中管理,提高复用性
2:spring 提供了与第三方 持久层框架的良好整合 。
3:spring框架不强制应用完全依赖于spirng,开发者可以自由选择spirng框架的部分或全部
Spring的两大核心:
Aop:面向切面编程,aop技术底层也是采用的代理技术,代理技术有两种:1:基于JDK的动态代理,2:基于CGLIB的动态 代理
AOP的用处以及好处:AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任,例如(事务处理、日志管理、权限管理、权限控制等),封装起来,便于减少系统的重复代码,降低模块的耦合度,并有利于未来的可操作性和可维护性。
IOC:IOC即控制反转,不是什么技术,而是一种设计思想。IOC意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。
控制反转:
控制:
谁控制谁:当然是ioc容器控制了对象
控制了什么:主要控制了外部资源获取(不止对象包括比如文件等)
反转:
为什么是反转:因为容器帮我们查找即注入依赖对象,对象只是被动的接受依赖对象
什么 被反转了:依赖的对象被反转了
DI:DI即依赖注入,依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为了提升组建重用的频率,并未系统搭建一个灵活、可扩展的平台。
依赖注入:
依赖:
谁依赖谁:应用程序依赖于ioc容器
为什么需要依赖:应用程序需要ioc容器来提供对象需要的外部资源
注入:
谁注入谁:ioc容器注入应用程序的某个对象,应用程序依赖的对象
注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常用数据)
IOC交给容器控制的好处:Tomcat的内存为64Mb,后来加大了内存容量,java中这个管家婆就是垃圾回收机制,但是她不是那么的智能,不能帮我们清理干净。在一个大项目中,如果我们想用对象就new对象的话,那会造成内存过大,java自动回收机制也无法替我们回收干净,有可能会造成内存溢出。而spring他是在一个线程池上创建的对象,当我们使用的时候就拿出来,不用的时候就挂起,很大程度的解决了内存溢出的问题。