1、传统javaweb开发困惑及解决方案
1.1,传统业务代码
1.2,存在的问题
1.2.1,问题一
1.2.2,问题二
2,Spring的理解
我们经常听见Spring框架,但什么是Spring框架呢,网上查了查,说的都很晦涩,如何更好的理解它呢,我列出来一下我的认知和看法,说的不对理解不对的还请指导!
2.1、Spring是什么?怎么抽象简单的理解Spring?
Spring是一个开源框架(就是一个容器,Spring模块都是在核心容器之上构建的),实现了工厂模式的工厂类,这个类名为BeanFactory(接口),在程序中通常用他的子类ApplicationContext。
2.2、Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
2.2.1,Spring的IOC模块
IOC(控制反转)就是在有了工厂模式后,当需要某个类的对象时,就不再需要new指定的类,而是调用工厂中的方法即可。也就不需要关心对象的创建过程。甚至有时候也许你需要的对象只要是某种大分类的类型就可以了,而不必是某个指定的类型。不会过渡依赖某个类,这些类都是易于被替换的,以提高整个项目的可维护性。
DI(依赖注入)也是IOC的重要实现。一个对象的创建往往会涉及到其他对象的创建,这就是依赖。IOC机制既然负责了对象的创建,那么这个依赖关系也就必须由IOC容器负责起来负责的方式就是DI——依赖注入,通过将依赖关系写入配置文件,然后在创建有依赖关系的对象时,由IOC容器注入依赖的对象。如在创建A时,检查到有依赖关系,IOC容器就把A依赖的对象B创建后注入到A中(组装,通过反射机制实现),然后把A返回给对象请求者,完成工作。
2.2.2,Spring的AOP模块
AOP(面向切面编程)就是系统中有很多各不相干的类的方法,在这些众多方法中要加入某种系统功能的代码,如加入日志,权限判断,异常处理,这种应用称为AOP。
实现AOP功能采用的是代理技术,客户端程序不再调用目标,而调用代理类,代理类与目标类对外具有相同的方法声明。
有两种方式可以实现相同的方法声明,一是实现相同的接口,二是作为目标的子类。在JDK中采用Proxy类,产生动态代理的方式为某个接口生成实现类,如果要为某个类生成子类,则采用CGLIB。系统功能的代理以Advice对象进行提供,要创建出代理对象,至少需要目标类和Advice类。Spring提供了这种支持,只需要在Spring配置文件中配置这两个元素即可实现代理和AOP功能。