浅谈对Spring的理解

更新时间:2019-06-12 09:56:46 点击次数:1439次
Spring框架是一个为Java应用程序的开发提供了综合、广泛的基础性支持的Java平台。

Spring体系里的常用到的项目:

1.SpringFramework
2.SpringData
3.SpringSecurity
4.SpringBoot
5.SpringCloud

Spring实现了工厂模式的工厂类,这个类名为BeanFactory(接口),在程序中通常用他的子接口ApplicationContext。

BeanFactory是Spring容器的根接口,ApplicationContext是它的子接口,通常用它的子接口ApplicationContext来访问Spring容器。

ApplicationContext子接口常用的有四个实现类:

1.ClassPathXmlApplicationContext 从 classpath 加载 spring 的配置文件
2.FileSystemApplicationContext 从系统文件加载 spring 的配置文件
3.AnnotationConfigApplicationContext 获取基于注解的 spring 容器对象
4.XmlWebApplicationContext 在 web 环境中获取 spring 容器对象
Spring相当于一个大的工厂类,在其配置文件中通过元素配置用于创建实例对象的类名和实例对象的属性。

工厂模式是一种生产对象型的设计模式,有了工厂模式后,当需要某个类的对象时,就不再需要new指定的类,而是调用工厂中的方法即可。也就不需要
关心对象的创建过程。甚至有时候也许你需要的对象只要是某种大分类的类型就可以了,而不必是某个指定的类型。不会过渡依赖某个类,这些类都是
易于被替换的,以提高整个项目的可维护性。

组成 Spring 框架的每个模块都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:

Spring 核心容器:核心容器提供 Spring 框架的基本功能,管理着Spring应用中bean的创建、配置和管理。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用DI将应用程序的配置和依赖性规范与实际的应用程序代码分开。
Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。提供了一种框架式的对象访问方法,有些象JNDI注册器。Context封装包的特性得自于Beans封装包,并添加了对国际化(I18N)的支持(例如资源绑定),事件传播,资源装载的方式和Context的透明创建,比如说通过Servlet容器。Spring 上下文和Bean工厂都是 bean 容器 的实现。
Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。
Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。
Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

spring有两个核心思想 (IOC (控制反转) , AOP(面向切面编程))

IOC (控制反转) : 控制反转就是一种思想 , 这个思想是怎么想的呢 , 就是将对象控制权的转移,从程序代码本身反转到了外部容器 。就是想把实体类 的生命周期交给spring去控制 , 让spring实现创建 ,实现初始化 , 实现销毁 . 这样就可以大大的免去在编写代码的过程中new一个对象 , 众所周知new 对象 是java代码编写里耦合性最大的一个事情 。

有反转就会有正转,正转就是应用程序用到了什么对象会直接在应用程序中进行创建,自己手动new出来。

也说了IOC是一种思想 ,那么怎么把这种思想实现呢 ,如今比较流行的的方法是依赖注入 DI(Dependency Injection)

DI(依赖注入):是指程序运行过程中,若需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序。依赖注入是目前最优秀的解耦方式。依赖注入让Spring的Bean之间以配置文件的方式组织在一起,而不是以硬编码的方式耦合在一起的。

两者的关系就是ioc是一种思想 ,而DI确实一种实现方式 ,这里介绍了IOC,那么下面再来说下spring的另外一个核心思想AOP

AOP(面向切面编程) : 面向切面编程是对OOP(面向对象编程)的完善和补充 。

面向切面是面向对象中的一种方式而已。在代码执行过程中,动态嵌入其他代码,叫做面向切面编程。

AOP采用一种称为“横切”的技术,将涉及多业务流程的通用功能抽取并单独封装,形成独立的切面,在合适的时机将这些切面横向切入到业务流程指定的位置中。

常见的使用场景有日志 ,事物管理以及数据库操作

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

回到顶部
嘿,我来帮您!