Spring的概念及个人理解
Spring的不同角度的概念
**狭义角度:Spring指的是Spring框架核心功能模块
广义角度:Spring是一个提供了众多功能模块的生态圈(简单来说就是与Spring有关的各种功能模块)
**
Spring的不同模块
spring的模块大致可以分为持久层,表现层,核心功能区,测试层
(Data Access/Integration)持久层:是Spring对数据持久化、事务管理的支持。
(Web)表现层 :是Spring对表现层数据的处理部分的支持。主要是针对用户可以看到见的页面之类的东西。
(Test) 测试层 :是Spring对项目提供的一个完整测试环境。一个完整的程序流程是少不了进行测试的,所以这个就是进行数据测试的。
核心功能区:就是上诉的狭义概念的核心功能模块,其主要的内容如图所示:
Spring核心功能模块的三大重要的功能
控制反转(IOC)
简单来说就是将你想要实例化的对象装进准备好的IOC容器中就是控制反转了。
依赖注入(DI)
简单来说就是将控制反转的注入容器的实例化对象有选择性的拿出来使用就是依赖注入了。
面向切面编程(AOP)
简单来说就是在原有的方法体中寻找一个切入点,向该切入点注入你想注入的方法或者是其他的程序功能,其原方法保持不变的一种编程方式。
Spring的优点
1.控制反转将对象的创建交给了spring,简化了开发,降低了代码之间的耦合性和侵入性。
2.方便对程序进行声明式事物管理,我们只需通过配置就可以完成对事物管理。
3.方便集成各种优秀的框架,spring不排斥各种优秀框架,其内部提供了对各种优秀框架如(struts2,hibernate,mybatis,quartz,jpa)等的直接支。
4.方便对程序进行测试,spring对于Junit4的支持,可通过注解方便测试程序。
5.降低了JavaEE API的使用难度,JDBC,Javamail,远程调用等,spring对它们进行了封装,使这些API的使用难度大大降低。