Spring框架是一个为Java应用程序的开发提供了综合、普遍的基础性支持的Java平台。java
Spring是一个十分庞大的体系,具体能够访问它的官网https://spring.io/projects进行详细了解。web
Spring体系里的经常使用到的项目:spring
Spring实现了工厂模式的工厂类,这个类名为BeanFactory(接口),在程序中一般用他的子接口ApplicationContext。数据库
BeanFactory是Spring容器的根接口,ApplicationContext是它的子接口,一般用它的子接口ApplicationContext来访问Spring容器。编程
ApplicationContext子接口经常使用的有四个实现类:设计模式
Spring至关于一个大的工厂类,在其配置文件中经过<bean>元素配置用于建立实例对象的类名和实例对象的属性。框架
工厂模式是一种生产对象型的设计模式,有了工厂模式后,当须要某个类的对象时,就再也不须要new指定的类,而是调用工厂中的方法便可。也就不须要
关心对象的建立过程。甚至有时候也许你须要的对象只要是某种大分类的类型就能够了,而没必要是某个指定的类型。不会过渡依赖某个类,这些类都是
易于被替换的,以提升整个项目的可维护性。工具
组成 Spring 框架的每一个模块均可以单独存在,或者与其余一个或多个模块联合实现。每一个模块的功能以下:编码
spring有两个核心思想 (IOC (控制反转) , AOP(面向切面编程))spa
IOC (控制反转) : 控制反转就是一种思想 , 这个思想是怎么想的呢 , 就是将对象控制权的转移,从程序代码自己反转到了外部容器 。就是想把实体类 的生命周期交给spring去控制 , 让spring实现建立 ,实现初始化 , 实现销毁 . 这样就能够大大的免去在编写代码的过程当中new一个对象 , 众所周知new 对象 是java代码编写里耦合性最大的一个事情 。
有反转就会有正转,正转就是应用程序用到了什么对象会直接在应用程序中进行建立,本身手动new出来。
也说了IOC是一种思想 ,那么怎么把这种思想实现呢 ,现在比较流行的的方法是依赖注入 DI(Dependency Injection)
DI(依赖注入):是指程序运行过程当中,若须要调用另外一个对象协助时,无须在代码中建立被调用者,而是依赖于外部容器,由外部容器建立后传递给程序。依赖注入是目前最优秀的解耦方式。依赖注入让Spring的Bean之间以配置文件的方式组织在一块儿,而不是以硬编码的方式耦合在一块儿的。
二者的关系就是ioc是一种思想 ,而DI确实一种实现方式 ,这里介绍了IOC,那么下面再来讲下spring的另一个核心思想AOP
AOP(面向切面编程) : 面向切面编程是对OOP(面向对象编程)的完善和补充 。
面向切面是面向对象中的一种方式而已。在代码执行过程当中,动态嵌入其余代码,叫作面向切面编程。
AOP采用一种称为“横切”的技术,将涉及多业务流程的通用功能抽取并单独封装,造成独立的切面,在合适的时机将这些切面横向切入到业务流程指定的位置中。
常见的使用场景有日志 ,事物管理以及数据库操做