返回顶部
首页 > 资讯 > 数据库 >Spring及相关框架知识小汇
  • 606
分享到

Spring及相关框架知识小汇

2024-04-02 19:04:59 606人浏览 泡泡鱼
摘要

  一 Spring相关知识介绍   简单点说,spring是一个分层的JavaSE/EE 一站式轻量级的开源框架。Spring致力于提供一种方法来管理你的业务对象。Sprin


  一 Spring相关知识介绍

   简单点说,spring是一个分层的JavaSE/EE 一站式轻量级的开源框架。Spring致力于提供一种方法来管理你的业务对象。Spring致力于J2EE应用的各层解决方案,而不是仅仅专注于某一层的方案,可以说Spring是企业应用的一站式选择,贯穿于表现层,业务层和持久层。然而,spring并不想取代它们,而是与它们无缝整合。

控制反转——Spring通过一种称作控制反转(ioc)的技术促进了低耦合。当应用了ioC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。

框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

MVC—Spring的作用是整合,但不仅仅限于整合,Spring 框架可以被看做是一个企业解决方案级别的框架。客户端发送请求,服务器控制器(由DispatcherServlet实现的)完成请求的转发,控制器调用一个用于映射的类HandlerMapping,该类用于将请求映射到对应的处理器来处理请求。HandlerMapping将请求映射到对应的处理器Controller(相当于Action)在Spring 当中如果写一些处理器组件,一般实现Controller 接口,在Controller 中就可以调用一些Service 或DAO 来进行数据操作, ModelAndView 用于存放从DAO 中取出的数据,还可以存放响应视图的一些数据。 如果想将处理结果返回给用户,那么在Spring框架中还提供一个视图组件ViewResolver,该组件根据Controller返回的标示,找到对应的视图,将响应response 返回给用户。

 

视图是一个接口,负责显示模型;控制器表示逻辑代码,是Controller的实现。

 

IOC和AOP

控制反转模式(也称作依赖性注入)的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器 (在Spring 框架中是 IOC 容器) 负责将这些联系在一起。在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间调用方法。下表列出了 IOC 的一个实现模式。

 

Spring的基本框架:

Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式。组成Spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:

1、核心容器:核心容器提供 Spring 框架的基本功能(SprinGCore)。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

2、Spring 上下文:Spring 上下文是一个配置文件,向 Spring框架提供上下文信息。Spring 上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能。

3、Spring aop:通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。

4、Spring DAO:JDBCDAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。

5、Spring ORM:Spring 框架插入了若干个ORM框架,从而提供了 ORM 的对象关系工具,其中包括JDO、Hibernate和iBatissqlMap。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。

6、Spring WEB 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。

7、Spring mvc 框架:MVC框架是一个全功能的构建 Web应用程序的 MVC 实现。通过策略接口,MVC框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 jsP、Velocity、Tiles、iText 和 POI。模型由javabean构成,存放于Map;视图是一个接口,负责显示模型;控制器表示逻辑代码,是Controller的实现。


DI的注解形式:

    注解的作用和特性:

1、  起到了一个解释说明的作用

2、  注解是不能单独存在的

3、  注解应该标在:类,方法,属性,参数等

4、  应该有一个类:该类起的作用是解释说明

 

1.1  利用注解的步骤

public class Person {

    @Resource

    private Student student;

    public void say(){

        this.student.student();

    }

}

 

注意:@Resource注解

 

在spring的配置文件中

要导入命名

xmlns:context=Http://www.springframework.org/schema/context

http://www.springframework.org/schema/context   

           http://www.springframework.org/schema/context/spring-context-3.0.xsd

启动注解解析器

<context:annotation-config></context:annotation-config>

1.2  原理

1、  当启动spring容器的时候,容器实例化了person和student

2、  当spring容器解析到

<context:annotation-config></context:annotation-config>的时候,spring容器会对spring容器范围的bean进行扫描,检查哪些bean的哪些属性

上有@Resource注解

3、  检查到了该注解的时候,检查@Resource注解的name属性的值是否为””

如果是空

     拿注解所在的属性的名称和spring配置文件中的bean中的id的值做匹配

     如果匹配成功,则赋值

     如果匹配不成功,则按照类型进行匹配

     如果类型也不匹配,肯定报错

如果不为空

     会提取到name属性的值,根据这个值,和spring容器中的id做匹配

     如果匹配不成功,则报错

 

 2.     类扫描机制

2.1.  步骤

1、   在spring配置文件中

    <context:component-scanbase-package="cn.tedu.big1603.spring.scan.annotation">          </context:component-scan>

    2、   在相应的类中

       @Component

    publicclass Person {}

    ==

    <beanid=”person” class=”…Person”

     

    @Component("p")

    publicclass Person {}

        ==

        <bean id=”p”class=”…Person”>

 

2.2.  原理

1、   当spring容器启动的时候,会解析到<context:component-scanbase-package="cn.tedu.big1603.spring.scan.annotation"></context:component-scan>

2、   会去base-package指定的包及子包中查找,查看哪个类上面加有@Compontent注解

3、   会检查该注解的value属性是否为””

如果为“”

    会创建一个bean对象,bean对象的id的值就是类名的组成,组成规则

        为首字母小写,其他不变

如果不为“”

    Value属性的值就是id的值

4、   上述步骤完事以后,在spring容器中有对象了。

5、   扫描所有的在spring容器中的bean,进行@Resouce注入的业务逻辑

2.3.  总结

     总共扫描了二次,第一次是把类放入到spring容器中,第二次是给属性注入值,所以配置文件的内容越少,效率越低,但是这个效率低对于web程序来说是可以忽略的。

2.4.  三种典型化注解

    @Repository

    @service

    @controller

    的作用和@Compontent的作用一样

 

AOP相关知识介绍:

 

在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。

可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态地统一添加功能的一种技术。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

 

在Spring中提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

 

  AOP,我们可以定义交叉的关系,并将这些关系应用于跨模块的、彼此不同的对象模型。


动态代理:所谓Dynamic Proxy是这样一种class:它是在运行时生成的class,在生成它时你必须提供一组interface给它,然后该class就宣称它实现了这些 interface。你当然可以把该class的实例当作这些interface中的任何一个来用。当然啦,这个Dynamic Proxy其实就是一个Proxy,它不会替你作实质性的工作,在生成它的实例时你必须提供一个handler,由它接管实际的工作。

注意事项:目标对象和代理对象实现了同一个接口.


动态代理模式实现该逻辑的缺点:

        在方法判断的时候,如果是生产环境,如果方法特别多,这里的判断就相当多

        在该类中只处理了事务,如果有权限、日志等内容怎么办呢?

总结

    动态代理实现该逻辑也不是最好的选择

 

二 MyBatis框架知识:


     mybatis是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

 

每个MyBatis应用程序主要都是使用SqlSessionFactoryc创建实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。

用xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(Classpathresource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。

功能架构讲解:

我们把Mybatis的功能架构分为三层:

(1)api接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。

(2)数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。

(3)基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。

 

MyBatis框架架构讲解:

(1)加载配置:配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。

(2)SQL解析:当API接口层接收到调用请求时,会接收到传入SQL的ID和传入对象(可以是Map、JavaBean或者基本数据类型),Mybatis会根据SQL的ID找到对应的MappedStatement,然后根据传入参数对象对MappedStatement进行解析,解析后可以得到最终要执行的SQL语句和参数。


(3)SQL执行:将最终得到的SQL和参数拿到数据库进行执行,得到操作数据库的结果。

(4)结果映射:将操作数据库的结果按照映射的配置进行转换,可以转换成HashMap、JavaBean或者基本数据类型,并将最终结果返回。


MyBatis 最强大的特性之一就是它的动态语句功能。如果您以前有使用JDBC或者类似框架的经历,您就会明白把SQL语句条件连接在一起是多么的痛苦,要确保不能忘记空格或者不要在columns列后面省略一个逗号等。动态语句能够完全解决掉这些痛苦。
  尽管与动态SQL一起工作不是在开一个party,但是MyBatis确实能通过在任何映射SQL语句中使用强大的动态SQL来改进这些状况。动态SQL元素对于任何使用过JSTL或者类似于XML之类的文本处理器的人来说,都是非常熟悉的。在上一版本中,需要了解和学习非常多的元素,但在MyBatis 3 中有了许多的改进,现在只剩下差不多二分之一的元素。MyBatis使用了基于强大的OGNL表达式来消除了大部分元素。


您可能感兴趣的文档:

--结束END--

本文标题: Spring及相关框架知识小汇

本文链接: https://lsjlt.com/news/39373.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Spring及相关框架知识小汇
      一 Spring相关知识介绍   简单点说,Spring是一个分层的JavaSE/EE 一站式轻量级的开源框架。Spring致力于提供一种方法来管理你的业务对象。Sprin...
    99+
    2024-04-02
  • Spring Cache相关知识总结
    简介  Spring 从 3.1 开始定义了 org.springframework.cache.Cache 和 org.springframework.cache.Cac...
    99+
    2024-04-02
  • Spring Cache相关知识有哪些
    这篇文章将为大家详细讲解有关Spring Cache相关知识有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。简介 Spring 从 3.1 开始定义了 org.springframework...
    99+
    2023-06-15
  • 云服务器相关知识点汇总
    云服务器是一种虚拟的、共享的、高可用的计算资源,通常用于远程服务器环境。作为云计算的重要组成部分之一,云服务器的管理、运维和性能优化是非常重要的。以下是一些常见的云服务器相关知识点: 数据备份和恢复:云服务器提供数据备份和恢复的功能,可...
    99+
    2023-10-26
    知识点 服务器
  • Java集合的总体框架相关知识总结
    目录一、集合概述二、集合在开发中的应用三、集合存储的数据四、集合的包五、集合的两大类一、集合概述 数组其实就是一个集合。集合实际上就是一个容器。可以来容纳其它的数据。 二、集合在开发...
    99+
    2024-04-02
  • 云服务器相关知识点汇总表
    一、云服务器的技术特点 高可用性:云服务器采用高可用技术,能够在不同的物理节点之间实现快速的数据同步和故障切换,确保服务器的正常运行。 弹性扩展:云服务器可以按需扩展存储和计算资源,根据用户需求动态调整计算能力和存储容量,实现弹性扩展。...
    99+
    2023-10-28
    知识点 汇总表 服务器
  • Spring事物基础知识及AOP相关陷阱分析
    目录一、事务的定义二、事务的属性三、Spring 事务的隔离级别3.1 隔离级别引出的问题3.1.1 脏读3.1.2 不可重复读3.1.3 幻读3.2 隔离级别四、Spring 事务...
    99+
    2024-04-02
  • Java常见知识点汇总(⑦)——集合框架
    一. Collection和Collections的区别Collection是集合继承结构中的顶层接口(interface),其是Iterable的子类。Collections 是提供了对集合进行操作的强大方法的工具类 ,它包含有各种有关集...
    99+
    2023-06-05
  • Spring JDBC框架的知识点有哪些
    这篇文章主要介绍“Spring JDBC框架的知识点有哪些”,在日常操作中,相信很多人在Spring JDBC框架的知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring&...
    99+
    2023-06-22
  • 介绍golang的%用法及相关知识
    在Go语言中,我们经常会用到%来进行格式化输出操作,%用法非常灵活,下面我们就来介绍一下golang的%用法及相关知识。基本用法:%用法最基本的形式就是用它将变量替换为指定的格式。例如下面代码将i替换为%d,%d表示输出变量i为十进制整数。...
    99+
    2023-05-14
  • Python 面试必问:同步框架相关知识点都有哪些?
    在 Python 面试中,同步框架是一个常见的话题。同步框架是处理并发任务的重要工具,它可以让多个任务在同一时间内运行,从而提高系统的效率。在本篇文章中,我们将介绍 Python 中常用的同步框架,包括 threading、multipr...
    99+
    2023-07-08
    面试 同步 框架
  • Java之SSM中bean相关知识汇总案例讲解
    bean 的生命周期 对象创建 实例化Bean对象,默认选择无参构造方法,如果只有一个有参构造那么调用有参构造,如果只有多个有参构造那么报错,除非其中一个有参构造添加了@...
    99+
    2024-04-02
  • C++中引用的相关知识点小结
    目录引用的概念引用特性常引用使用场景引用和指针的区别总结引用的概念 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块...
    99+
    2024-04-02
  • Postgresql 触发器实例及相关知识了解
    执行顺序 1)触发器按按执行的时间被分为before触发器和after触发器。语句级的before触发器在语句开始执行前被调用,语句级的after触发器在语句开始执行结束后被调用。 2)数据行级的before触发器在操作每个数据行以前被...
    99+
    2020-02-11
    Postgresql 触发器实例及相关知识了解
  • Java 自定义Spring框架与Spring IoC相关接口分析
    在本讲,我们来对Spring IoC功能相关的接口逐一进行分析,分析这些接口的原因就是为了我们自己定义Spring IoC功能提前做好准备。 Spring IoC相关接口分析 Bea...
    99+
    2024-04-02
  • Oracle补丁相关的知识及术语是什么
    本篇内容介绍了“Oracle补丁相关的知识及术语是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.&...
    99+
    2024-04-02
  • PHP版本NTS的意义及相关知识介绍
    PHP版本NTS的意义及相关知识介绍 PHP是一种广泛应用于服务器端脚本语言,用于开发动态网页和Web应用程序。PHP的版本有两种不同的构建版本:NTS(Non-Thread Safe...
    99+
    2024-04-02
  • 关于npm主版本升级及其相关知识点总结
    目录前言1、关于npm主版本升级2、项目上下文 局部安装 开发依赖3、mockjs版本兼容性4、mockJS对node(及其集成安装的npm)版本的兼容性5、根据...
    99+
    2022-12-26
    npm升级教程 npm升级到指定版本 怎么升级node版本
  • 前端大数的运算及相关知识有哪些
    本篇内容主要讲解“前端大数的运算及相关知识有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“前端大数的运算及相关知识有哪些”吧! 背景前段时间我在公...
    99+
    2024-04-02
  • Spring框架中数组相关的最佳实践是什么?
    Spring框架作为Java企业级应用开发的事实标准,其强大的功能和良好的设计让它成为了众多企业和开发者的首选。在Spring框架中,数组是常见的数据结构之一,因此合理的使用和最佳实践对于提高代码的质量和可维护性至关重要。下面,我们将探讨...
    99+
    2023-10-17
    数组 laravel spring
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作