zoukankan      html  css  js  c++  java
  • spring的简介

    1)什么是spring?

    答:spring是一个致力于解决企业级开发的一个分层的javaEE的框架,它是以IOC和AOP为核心,使用基本的JavaBean来完成工作。spring在表现层有springmvc以及struts的框架功能;在业务逻辑层可以管理事务,记录日志等;在持久层可以整合mybatis或者mybatisplus或者hibernate等技术进行开发。虽然spring贯穿于表现层,业务逻辑层和持久层,但是他并不是手替代对原有的框架,而是想要与他们进行整合。

    他的优点:

    1:非侵入式入侵:可以使应用程序对框架依赖度最小化

    2:方便解耦,简化开发:spring是一个大型的工厂,可以将所有的对象的建立和依赖关系的维护都交给spring容器管理,大大降低了组件之间的耦合性。

    3:支持AOP:spring提供了AOP的支持,允许对事物和日志进行管理

    4:支持声明式的事物处理:只需要通过配置或者注解就能够完成对事务的管理,而无需手动编程。

    5:方便集成各种的优秀的框架:

    6:集成了对jUnit4的测试支持:对测试更好

    7:降低了开发难度

    2)spring的体系结构

     1:Core Container(核心容器)

          spring的核模块是其他模块的建立的基础,他主要由Beans模块,Core模块,Context模块,Context- Context-support 模块和 SpEL ( Spring Expression Language , Spring 表达式语言)模块 组成,具体介绍如下。 

         Beans模块:提供了BeanFactory,是工厂模式的经典体现,spring将管理对象称为Bean。

         Core模块:提供了spring框架的基本组成部分,包括IOC和DI功能。

         Context上下文模块:建立在core和Beans模块之上,它是访问定义和配置的任何对象的媒介。其中ApplicationContext接口是上下文的焦点。

         Context-support 模块:提供了对第三方库嵌入 Spring 应用的集成支持,比如缓存 ( EhCache、 Guava、 JCache)、 邮件服务 (JavaMail)、 任务调度( CommonJ、 Quartz) 和模 板引擎( FreeMarker、 JasperReports、 速率)。 • SpEL 模块:是 Spring 3.0 后新增的模块,它提供了 Spring Expression Language 支持, 是运行时查询和操作对象图的强大的表达式语言。 

    2. Data Access/lntegration (戴帽访问l集成)

    数据访问/集成层包括 JDBC、 ORM 、 OXM、 JMS 和 Transactions 模块,具体介绍如下。

    JDBC 模块:提供了一个 JDBC 的抽象层,大幅度地减少了在开发过程中对数据库操作的 编码。 .

    ORM 模块:对流行的对象关系映射 API ,包括 JPA、 JDO 和 Hibernate 提供了集成支持。

    Transactions 事务模块:支持对实现特殊接口以及所有 POJO 类的编程和声明式的事 务管理。 

    3.web模块

    Spring 的 Web 层包括 WebSocket、 Servlet、 Web 和 Portlet 模块,具体介绍如下。

    • WebSocket 模块: Spring 4.0 以后新增的模块,它提供了 WebSocket 和 SockJS 的实现, 以及对 STOMP 的支持。

    • Servlet 模块:也称为 Spring-webmvc 模块,包含了 Spring 的模型一视图一控制器(MVC) 和 REST Web Services 实现的 Web 应用程序。

    • Web 模块:提供了基本的 Web 开发集成特性,例如: 多文件上传功能、 使用 Servlet 监 听器来初始化 loC 容器以及 Web 应用上下文。

    • Portlet 模块:提供了在 Portlet 环境中使用 MVC 实现,类似 Servlet 模块的功能。 

    4. 其他模块 Spring 的其他模块还有 AOP、 Aspects、 Instrumentation 以及 Test 模块,具体介绍如下

    • AOP 模块:提供了面向切面编程实现,允许定义方法拦截器和切入点,将代码按照功能 进行分离,以降低搞合性。

    • Aspects 模块:提供了与 AspectJ 的集成功能, AspectJ 是一个功能强大且成熟的面向切 面编程 (AOP) 框架。

    • Instrumentation 模块:提供了类工具的支持和类加载器的实现,可以在特定的应用服务器 中使用。

    • Messaging 模块: Spring 4.0 以后新增的模块,它提供了对消息传递体系结构和协议 的支持。

    • Test 模块:提供了对单元测试和集成测试的支持。

    3)spring的核心容器:

    Spring 框架的主要功能是通过其核心容器来实现的,因此在正式学习 Spring 框架的使用之 前,有必要先对其核心容器有一定的了解。Spring 框架提供了两种核心容器,分别为 BeanFactory AppIicationContext。 本节中将对这两种核心容器进行简单的介绍。

    1:BeanFactory:是一个基础类型的IOC容器(这里表示控制反转),他提供了完整的IOC服务的支持。简单来说,BeanFactory是一个管理Bean的工厂,他主要负责各种初始化Bean,并调用他们的生命周期。

          BeanFactory 接口提供了几个实现类,其中最常用的是 org.springframework. beans factory.xml.XmIBeanFactory ,该类会根据 XML 配置文件中的定义来装配 Beano 创建 BeanFactory 实例时,需要提供 Spring 所管理容器的详细配置信息,这些信息通常采 用 XML 文件形式来管理,其加载配置信息的语法如下。


    BeanFactory beanFactory = new XmlBeanFactory(new FileSystemResource("F: /applicationContext.xml")) ;

    这种加载方式在实际开发中并不多用,读者了解即可。

    2:ApllicationContext:是BeanFactory的子接口,也被称为应用上下文,是另一种常用的spring核心容器。不仅包含了BeanFactoy的所有功能,而且还添加了对国际化,资源访问,事务传播等方面的支持。

    1). 通过 ClassPathXmlApplicationContext 创建 ClassPathXmlAp~licationContext 会从类路径 classPath 中寻找指定的 XML 配置文件,找
    到并装载完成 ApplicationContext 的实例化工作,其使用语法如下。


    ApplicationContext applicationContext = new ClassPathXmlApplicationContext(String configLocation) ;

    上述代码中, configLocation 参数用于指定 Spring 配置文件的名称和位置。 如果其值为 "applicationContext.xml" ,贝IJ Spring 会去类路径中查找名称为 applicationContext.xml 的配置 文件。 

    2). 通过 FileSystemXmlApplicationContext 创建

    FileSystemXmlApplicationContext 会从指定的文件系统路径(绝对路径)中寻找指定的 XML 配置文件,找到并装载完成 ApplicationContext 的实例化工作,其使用语法如下。
    ApplicationContext applicationContext = new FileSystemXmlApplicationContext(String configLocation);

    与 ClassPathXmlApplicationContext 有所不同的是,在读取 Spring 的配置文件时, FileSystemXmlApplicationContext 不再从类路径中读取配置文件,而是通过参数指定配置文件 的位置,例如 "D:/workspaces/app I icationContext. xm 1"。 如果在参数中写的不是绝对路径,那 么方法调用的时候,会默认用绝对路径来找。 这种采用绝对路径的方式,会导致程序的灵活性变 差,所以这个方法一般不推荐使用。 在使用 Spring 框架时,可以通过实例化其中任何一个类来创建 ApplicationContext 容器。

        通常在 Java 项目中,会采用通过 ClassPathXmlApplicationContext 类来实例化 ApplicationContext 容器的方式,而在 Web 项目中, ApplicationContext 容器的实例化工作会交由 Web 服务器来完成 。 Web 服务器实例化 ApplicationContext 容器时,通常会使用基于 ContextLoaderListener 实现的方式,此种方式只需要在 web.xml 中添加如下代码。

     重点:

    BeanFactory 和 ApplicationContext 两种容器都是通过 XML 配置文件加载 Bean 的。

    二者的主 要区别在于,如果 Bean 的某一个属性没有注入,使用 BeanFacotry JJn载后,在第一次调用 getBea()方法时会抛出异常,而 ApplicationContext 则在初始化时自检,这样有利于检查所依赖 属性是否注入。 因此 ,在实际开发中,通常都优先选择使用 ApplicationContext ,而只有在系统 资源较少时,才考虑使用 BeanFactory。

    参考书籍:Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)

  • 相关阅读:
    RabbitMQ安装
    基于Linux的校园网破解思路和方法
    网络-0001-常见传输介质
    友情链接
    linux简史
    计算机的发展简史
    ArrayList&LinkedList&Vector区别
    Adobe Flash Player PPAPI 32.0.0.330
    ntoskrnl.exe导致蓝屏解决方法
    Git常用命令
  • 原文地址:https://www.cnblogs.com/clover-forever/p/12529630.html
Copyright © 2011-2022 走看看