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)

  • 相关阅读:
    每日一水 POJ8道水题
    编译和使用 MySQL C++ Connector
    j2ee model1模型完成分页逻辑的实现 详解!
    DB查询分析器访问EXCEL时,要在表名前后加上中括弧或双引号
    指向结构体变量的指针
    EOSS V3.0 企业运营支撑系统(基于RBAC原理的权限管理)
    MybatisGen1.0 Mybatis JavaBean Mapper生成工具
    The table name must be enclosed in double quotation marks or sqare bracket while accessing EXCEL by
    资源-Android:Android
    软件-开发软件:Android Studio
  • 原文地址:https://www.cnblogs.com/clover-forever/p/12529630.html
Copyright © 2011-2022 走看看