zoukankan      html  css  js  c++  java
  • Spring核心简介

    Spring简介

    Spring是一个开源、轻量级框架。在诞生之初,创建Spring的主要目的是用来替代更加重量级的企业级Java技术,尤其是EJB(Enterprise JavaBean)。从最初的挑战者,到现在诸多标准的制定者;从传统的JEE应用,到大数据、NoSQL、企业应用集成、批处理、移动开发等领域,Spring都在参与和发挥影响力。

    Spring的目标

    Spring致力于简化企业级Java开发,促进代码的松散耦合。成功的关键在于IOC和AOP。它采取4种关键策略:

    1. 基于POJO(简单老式Java对象 Plain Old Java object)的轻量级和最小侵入性编程
      • Spring不会强迫你实现Spring规范的接口或继承Spring规范的类
      • 在基于Spring构建的应用中,它的类通常没有任何痕迹表明你使用了Spring,它依旧是POJO
    2. 通过依赖注入和面向接口实现松耦合
      • 不同的类必须以适当的方式进行交互来完成有实际意义的功能,所以耦合是必须的,但是需要谨慎管理
      • 依赖注入会将所依赖的关系自动交给目标对象,而不是让对象自己去获取依赖
    3. 基于切面和惯例进行声明式编程
      • AOP以声明的方式将服务模块化并应用到他们需要影响的组件中去,使这些组件具有高内聚性并更加关注自身业务,确保POJO的简单性。
    4. 通过切面和模板减少样板式代码
      • Spring通过模板封装来消除样板式代码(大量重复代码)

    Spring容器

    容器是Spring框架的核心。在Spring应用中,对象由Spring容器创建和装配,并存在容器之中 。

    1. Spring实现了多个容器,主要有两种,bean工厂(由org.springframework.beans.factory.beanFactory接口定义)和应用上下文(由org.springframework.context.ApplicationContext接口定义)。我们使用更高级的后者。
    2. Spring自带了多种类型的应用上下文,比如从文件系统下的一个或多个XML配置文件中加载上下文定义使用FileSystemXmlapplicationcontext。
    3. 创建Spring容器:ApplicationContext context
    4. 从类路径下的一个或多个XML配置文件中加载应用上下文:ApplicationContext context = new ClassPathXmlApplicationContext("example.xml");

    Spring模块

    在Spring 5.0 中,Spring框架的发布版本包括了21个不同的模块,每个模块会有3个JAR文件(二进制类库、源码的JAR文件以及JavaDoc的JAR文件)Spring模块根据功能划分为6类不同的功能。

    1. Spring核心容器
      容器是Spring框架最核心的部分,它管理着Spring应用中bean的创建、配置和管理。包括bean工厂和应用上下文。还包括一些企业服务,如E-mail、JNDI访问、EJB集成与调度。所有的Spring模块都构建于核心容器之上。
    2. Spring的AOP模块
      与DI一样,AOP可以帮助应用对象解耦。借助于AOP,可以将遍布系统的关注点(例如事务和安全)从它们所应用的对象中解耦出来。
    3. 数据访问与集成
      Spring的JDBC和DAO(Data Access Object)模块抽象了样板式代码,并在多种数据库服务的错误信息之上构建了一个语义丰富的异常层。Spring的ORM模块对许多流行的ORM框架进行了集成,包括Hibernate、Java Persistence API、Java Data Object和iBATIS SQL Maps。
    4. Web与远程调用
      Spring能够与多种流行的MVC框架进行集成,同时,它的Web和远程调用模块自带了一个强大的MVC框架,有助于在Web层提升应用的松耦合水平。
    5. Instrumentation
      Spring的Instrumentation模块提供了为JVM添加代理(agent)的功能,使用场景非常有限。
    6. 测试
      Spring为使用JNDI、Servlet和Portlet编写单元测试提供了一系列的 mock对象实现。对于集成测试,该模块为加载Spring应用上下文中的bean集合以及与Spring上下文中的bean进行交互提供了支持。

    参考书籍

    《Spring IN ACTION》

  • 相关阅读:
    【Codechef】Chef and Bike(二维多项式插值)
    USACO 完结的一些感想
    USACO 6.5 Checker Challenge
    USACO 6.5 The Clocks
    USACO 6.5 Betsy's Tour (插头dp)
    USACO 6.5 Closed Fences
    USACO 6.4 Electric Fences
    USACO 6.5 All Latin Squares
    USACO 6.4 The Primes
    USACO 6.4 Wisconsin Squares
  • 原文地址:https://www.cnblogs.com/pycrab/p/9462385.html
Copyright © 2011-2022 走看看