zoukankan      html  css  js  c++  java
  • Spring基本知识

    基本概念

      Spring框架是基于Java平台的,它为应用程序的开发提供了全面的基础设施支持。Spring专注于基础设施,这使得开发者能更好地致力于应用开发而不用支关心底层的架构。

      Spring框架本身并未强制使用任何特别的编程模式。从设计上看,Spring框架给予Java程序员许多自由度,但是同时对业界存在的一些常见问题也提供了规范的文档和易于使用的方法。

      Spring框架的核心功能选用于任何Java应用。在基于Java企业平台的大量Web应用中,积极的拓展和改进已经形成。而Spring的用途也不仅限于服务器端开发,从简单性、可测试性和松耦全的角度来说,任何Java应用都可以从Spring中获得好处。

    1.Spring框架优势

      Spring框架的优势可以总结为如下几点:

    1.   Spring框架能有效组织中间层对象。Spring框架能够有效地将现有的框架例如Struts和Hibernate框架组织起来。
    2.   Spring框架实现了真正意义上的面向接口编程,可实现组件之间的高度解耦,而面向接口编程是一种良好的编程习惯。
    3.   Spring所秉承的设计思想就是让使用Spring创建的那些应用都尽可能少地依赖于它的APIs。在Spring应用中的大多数业务对象都不依赖于Spring。
    4.   使用Spring构建的应用程序易于进行测试。
    5.   Spring提高了代码的可重用性,它尽可能避免在程序中使用硬编码。Spring可以将应用程序中的某些代码抽象出来,然后在其他程序中使用这些代码。
    6.   Spring为数据存取提供了一个一致的框架,简介了底层数据库的访问方式。

    2.依赖注入(DI)和控制反转(IOC)

      依赖注入和控制反转实际上是同一个概念。在传统的程序设计中,通常由调用者来创建被调用都的实例,而在依赖注入或控制反转的定义中,调用者不负责被调用者的创建工作,该工作由Spring框架中的容器来负责,它通过开发者的配置来判断实例的类型,创建后再注入调用者。由于Spring容器负责创建被调用者的实例,实例创建后又负责将该实例注入调用者,因此被称为依赖注入而被调用者的实例创建工作不再由调用者来创建而是由Spring来创建,因此称为控制反转。

      Spring框架通过依赖注入或者控制反转的方式来管理各个对象,这种动态而灵活的方式使得各个对象之间的依赖关系和具体实现更容易被理解,也便于开发者对项目的管理。

    3.面向切面编程(AOP)

      面向切面编程是对面向对象编程的补充和完善。

      在OOP中通过封装、继承和多态性等概念建立了多个对象之间的层次结构,但是当需要为这些分散的对象加入一些公共行为时,OOP就显得力不从心了。换句话说,OOP擅长的是定义从上到下的关系,但是不适合定义从左到右的关系。以日志功能为例,日志代码往往会分散地存在所有的对象层次中,而这些代码又与其所属对象的核心功能没有任何关系。像日志代码这种分散在各处且与对象核心功能无关的代码就被称为横切代码。在OOP中,正是横切代码的存在导致了大量的代码重复,而增加了模块利用的难度。

      AOP的出现恰好解决了OOP技术的这种局限性。AOP利用了一种称为“横切”的技术,将封装好的对象剖开,找出其中对多个对象产生影响的公共行为,并将其封装为一个可重用的模块,这个模块被命名为“切面”。切面将那些与业务无关,却被业务模块共同调用的逻辑提取并封装起来,减少了系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。

    4.日志

      在Spring中,日志主要用来监控代码中变量的变化,跟踪代码运行的轨迹,在开发环境中担当调试器,向控制台或者文件输出信息。在Spring框架中,日志记录是必不可少的,如果没有对应的依赖包,会产生错误。

      日志框架有很多种,在Spring中一般采用Log4j框架,该框架需要额外配置,只需将其对应的开发包加入到Spring项目的开发库中即可。

  • 相关阅读:
    TC Asia Competition
    Codeforces 258 Div2
    斯坦纳树
    <算法竞赛入门经典> 第8章 贪心+递归+分治总结
    UVALive 6602 Counting Lattice Squares
    UVALive 6609 Minimal Subarray Length (查找+构建排序数组)
    vue中路由以及动态路由跳转
    sublime安装
    js数组转对象
    如何将变量做为一个对象的key,push进一个数组?
  • 原文地址:https://www.cnblogs.com/xiajingzero/p/4474076.html
Copyright © 2011-2022 走看看