美文网首页IT@程序员猿媛互联网科技
Spring实战(一)—— Spring之旅

Spring实战(一)—— Spring之旅

作者: 麻雀也有明天 | 来源:发表于2019-04-23 15:10 被阅读3次

    1.1 简化Java开发

    为了降低Java开发的复杂性,Spring采取了以下四种关键策略:

    1、基于POJO的轻量级和最小侵入性编程;

    2、通过依赖注入和面向接口实现松耦合;

    3、基于切面和惯例进行声明式编程;

    4、通过切面和模版减少样板式代码。

    耦合具有两面性。一方面,紧密耦合的代码难以测试,难以复用,难以理解,并且典型地表现出“打地鼠”式的bug特性(修复一个,将会出现一个或者更多新的bug)。另一方面,一定程度的耦合又是必须的——完全没有耦合的代码什么也做不了。为了完成有实际意义的功能,不同的类必须以适当的方式进行交互,耦合是必须的,但是必须小心谨慎的处理。

    DI(依赖注入)所带来的最大收益——松耦合。

    创建应用组件之间协作的行为通常称为装配。spring有多种装配方式,采用XML是很常见的一种装配方式。Spring也提供了基于Java的配置。可作为XML的替代方案。

    不管是使用的是基于XML的配置还是基于Java的配置,DI所带来的收益都是相同的。

    Spring通过应用上下文(Application Context)装载bean的定义并把他们组装起来。spring应用上下文全权负责对象的创建和组装。spring自带了多种应用上下文的实现,他们之间主要的区别仅仅在于如何加载配置。

    DI能够让相互协作的软件组件保持松散耦合,而面向切面编程允许你把遍布应用各处的功能分离出来形成可重用的组件。

    面向切面编程往往被定义为促使软件系统实现关注点的分离一项技术。

    AOP能够使服务模块化,是每个组件具有更高的内聚性并且会更加关注自身的业务,完全不需要考虑系统服务所带来的复杂性,总之,AOP能够确保POJO的简单性。借助AOP,可以使用各种功能层包裹核心业务层,这些层以声明的方式灵活的应用到系统中。

    Spring旨在通过模版封装来消除样板式代码。

    在基于Spring的应用中,你的应用对象生存于Spring容器。Spring容器负责创建对象,装配它们,配置它们并管理它们的整个生命周期,从生存到死亡。

    1.2 容纳你的Bean

    容器是Spring框架的核心。

    Spring容器并不是只有一个。Spring自带的多个容器实现,可以归为两种不同的类型。bean工厂是最简单的容器,提供基本的DI支持。应用上下文基于BeanFactory构建,并提供应用框架级别的服务。bean工厂太低级,因此应用上下文更受欢迎。

    Spring自带了多种类型的应用上下文:

    1、AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载Spring应用上下文

    2、AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载Spring Web应用上下文

    3、ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加载上下文定义,把应用上下文的定义文件作为类资源

    4、FileSystemXmlApplicationContext:从文件系统下的一个或多个XML配置文件中加载上下文定义

    5、XmlWebApplicationContext:从Web应用下的一个或多个XML配置文件中加载上下文定义

    无论是从文件系统中装载应用上下文还是从类路径下装载应用上下文,将bean加载到bean工厂的过程都是相似的。

    应用上下文准备就绪之后。我们就可以调用上下文的getbean()方法从Spring容器中获取bean。

    bean的生命周期:

    实例化——填充属性——调用BeanNameAware的setBeanName()方法——调用BeanFactoryAware的setBeanFactory()方法——调用ApplicationContextAware的setApplicationContext()方法——调用BeanPostProcessor的预初始化方法——调用InitializingBean的afterPropertiesSet()方法——调用自定义的初始化方法——调用BeanPostProcessor的初始化后方法——bean就可以使用了——容器关闭——调用DisposableBean的destroy()方法——调用自定义的销毁方法

    1.3 俯瞰Spring风景线

    在Spring的范畴内,你会发现Spring简化Java开发的多种方式。但在Spring框架之外还存在一个构建在核心框架之上的庞大生态圈。它将Spring扩展到不同的领域,例如web服务、REST、移动开发以及NoSQL。

    1.3.1 Spring模块

    Spring框架的发布版本包括20个不同的模块,每个模块会有3个JAR文件(二进制类库、源码的JAR文件以及JavaDoc的JAR文件)。这些模块按照功能可以划分为6类不同的功能,总体而言,这些模块为开发企业级应用提供了所需的一切。但是你可以不必将应用建在整个Spring框架之上,可以自由的选择适合自身应用需求的Spring模块,当Spring不能满足要求时,可以选择其他选择。事实上,Spring甚至提供了与其他第三方框架和类库的集成点。

    Spring核心容器

    容器是Spring框架最核心的部分,它管理着Spring应用bean的创建、配置和管理。在该模块中,包括了Spring bean工厂,它为Spring提供了DI的功能。基于bean工厂。我们还会有多种Spring应用上下文的实现,每一种都提供了配置Spring的不同方式。除了bean工厂和应用上下文,该模块还提供了很多企业服务,例如E-mail、JNDI访问、EJB集成和调度。

    Spring的AOP模块

    在AOP模块中,Spring对面向切面编程提供了丰富的支持。这个模块是Spring应用系统中开发切面的基础。与DI一样,AOP可以帮助应用对象解耦。

    数据访问和集成

    Spring的JDBC和DAO模块抽象了样板式代码,使我们的数据库代码变得简单明了,还可以避免因为关闭数据库资源失败而引发的问题。对于那些更喜欢ORM工具 而不愿意直接使用JDBC的开发者,Spring提供了ORM模块。Spring的ORM模块建立在对DAO的支持之上,并为多个ORM框架提供了一种构建DAO的简便方式。Spring没有尝试去创建自己的ORM解决方案,而是对许多流行的ORM框架进行了集成。Spring的事务管理支持所有的ORM框架以及JDBC。

    Web与远程调用

    MVC模式是一种普遍被接受的构建Web应用的方法,它可以帮助用户将界面逻辑与应用逻辑分离。

    Instrumentation

    Spring的Instrumentation模块提供了为JVM添加代理的功能。


    相关文章

      网友评论

        本文标题:Spring实战(一)—— Spring之旅

        本文链接:https://www.haomeiwen.com/subject/pmwcgqtx.html