一 Spring概述 Spring是分层的 Java SE/EE应用 **full-stack(**全栈式) 轻量级开源框架。 Spring是非侵入式的:典型的,spring应用中的对象不依赖spring特定类。 Spring提供了表现层 SpringMVC和持久层 Spring JDBC Template以及 业务层 事务管理等众多的企业级应用技术 两大核心:以 IOC(Inverse Of Control:控制反转)和 AOP(Aspect Oriented Programming:面向切面编程)为内核。

二 IOC Spring通过控制反转的技术促进了低耦合 控制:在java中指的是对象的控制权限(创建、销毁) 反转:指的是对象控制权由原来 由开发者在类中手动控制 反转到 由Spring容器控制 解耦合的原则是编译期不依赖,而运行期依赖就行了。

2.1自定义BeanFactory

注意:将创建对象交给spring不用new

**思路:使用反射创建类,但是又存在硬编码问题,使用配置文件解决,因此要使用dom4j加载解析xml,然后将其存入map中和类名映射,使用的时候通过类名就可以从map中获取对象。**最终目标:代码解耦合

newInstance()和new()区别:

1、两者创建对象的方式不同,前者是实用类的加载机制,后者则是直接创建一个类:

2、newInstance创建类是这个类必须已经加载过且已经连接,new创建类是则不需要这个类加载过

3、newInstance: 弱类型(GC是回收对象的限制条件很低,容易被回收)、低效率、只能调用无参构造,new 强类型(GC不会自动回收,只有所有的指向对象的引用被移除是才会被回收,若对象生命周期已经结束,但引用没有被移除,经常会出现内存溢出)

Spring_IOC(控制反转)剖析_解耦