您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

Spring框架和Spring Boot框架的区别

时间:2019-12-09 10:50:27  来源:  作者:

什么是Spring Boot框架?什么是Spring框架?他们的目标是什么?他们产生的背景是怎样的,两者有什么区别,我们应该使用哪个框架进行开发,带着这样的疑问,我们开始今天的讲解。

Spring框架和Spring Boot框架的区别

 

Spring框架背景

Spring框架是JAVA最受欢迎的应用程序开发框架之一。Spring的最佳功能是它具有依赖注入(DI)控制反转(IOC), 这使我们能够开发松耦合的应用程序。而且,松耦合的应用程序可以轻松地进行单元测试。 隔壁的php中的Laravel为什么大手欢迎,也是它实现了依赖注入、控制反转的功能。

Spring框架和Spring Boot框架的区别

 

依赖注入

考虑下面的示例- MyController 要通过 MyService 来执行特定任务。因此,首先我们要获取MyService的实例,我们将使用:

MyService service = new MyService();

现在,我们为创建了实例 MyService ,我们看到两者紧密耦合。如果MyService 在的单元测试中 创建的模拟 MyController ,如何 MyController 使用该模拟?有点困难-是吗?

@RestController
public class MyController {
 private MyService service = new MyService();
 @RequestMApping("/welcome")
 public String welcome() {
 return service.retrieveWelcomeMessage();
 }
}

 依赖注入的示例

仅通过两个注释,我们就可以MyService 轻松获得实例,而实例之间 并不是紧密耦合的。Spring框架做了所有艰苦的工作,使事情变得更简单。

  • @Component 在Spring 中只是简单地用作需要在自己的BeanFactory(Factory模式的实现)中进行管理的bean。
  • @Autowired 在Spring 中仅用于习惯找到该特定类型的正确匹配并将其自动装配。

因此,Spring框架将为其创建一个bean MyService 并将其自动连接到中 MyController。

在单元测试中,Spring框架可以将模拟MyService 自动关联到 MyController 。

@Component
public class MyService {
 public String retrieveWelcomeMessage(){
 return "Welcome to InnovationM";
 }
}
@RestController
public class MyController {
 @Autowired
 private MyService service;
 
 @RequestMapping("/welcome")
 public String welcome() {
 return service.retrieveWelcomeMessage();
 }
}

Spring框架还有许多其他功能,以下是一些它比较流行的模块:

  • Spring JDBC
  • Spring MVC
  • Spring AOP
  • Spring ORM
  • Spring JMS
  • Spring TEST
  • Spring(SpEL)

面向切面的编程(AOP)是Spring框架的另一个强项。面向对象编程中强调的是,而在AOP中,强调的是

例如,如果要在项目,日志记录等中添加安全性,则可以仅使用AOP并将其作为跨领域的关注点,而不涉及主要业务逻辑。可以在方法调用之后,方法调用之前,方法返回之后或异常发生之后执行任何操作。

Spring框架没有自己的ORM,但是它提供了与ORM的很好的集成,例如Hibernate,Apache iBATIS等。

简而言之,我们可以说Spring框架提供了一种分离的方式来开发Web应用程序。借助Spring中的这些概念(例如Dispatcher Servlet,ModelAndView和View Resolver),Web应用程序开发变得容易。

Spring Boot背景

现在,如果您已经使用过Spring,请考虑一下在开发具有所有功能的成熟Spring应用程序时遇到的问题。设置Hibernate数据源,实体管理器,会话工厂和事务管理非常的复杂,并且要花费大量的时间。对于开发人员来说,使用带有最少功能的Spring MVC建立基本项目可能就需要花费大量时间。

 <bean
 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
 <property name="prefix">
 <value>/WEB-INF/views/</value>
 </property>
 <property name="suffix">
 <value>.jsp</value>
 </property>
 </bean>
<servlet>
 <servlet-name>dispatcher</servlet-name>
 <servlet-class>
 org.springframework.web.servlet.DispatcherServlet
 </servlet-class>
 <init-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>/WEB-INF/my-servlet.xml</param-value>
 </init-param>
 <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
 <servlet-name>dispatcher</servlet-name>
 <url-pattern>/</url-pattern>
 </servlet-mapping>

使用Hibernate时,我们必须配置诸如数据源,EntityManager等之类的东西。

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
 destroy-method="close">
 <property name="driverClass" value="${db.driver}" />
 <property name="jdbcUrl" value="${db.url}" />
 <property name="user" value="${db.username}" />
 <property name="password" value="${db.password}" />
 </bean>
 <jdbc:initialize-database data-source="dataSource">
 <jdbc:script location="classpath:config/schema.sql" />
 <jdbc:script location="classpath:config/data.sql" />
 </jdbc:initialize-database>
 <bean
 class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
 id="entityManagerFactory">
 <property name="persistenceUnitName" value="hsql_pu" />
 <property name="dataSource" ref="dataSource" />
 </bean>
 <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
 <property name="entityManagerFactory" ref="entityManagerFactory" />
 <property name="dataSource" ref="dataSource" />
 </bean>
 <tx:annotation-driven transaction-manager="transactionManager"/>

 Spring Boot解决办法

  1. Spring Boot会完成所有使用的工作, 自动配置并且会处理应用程序所需的所有内部依赖关系-您所需要做的就是运行应用程序。如果Spring jar 在类路径中,则Spring Boot将使用Dispatcher Servlet自动配置 。如果Hibernate jar 在类路径中,它将自动配置到数据源 。Spring Boot为我们提供了一组预配置的Starter项目,这些项目将作为依赖项添加到我们的项目中。
  2. 在Web应用程序开发期间,我们将需要使用的jar,使用的jar版本以及如何将它们连接在一起。所有Web应用程序都具有类似的需求,例如Spring MVC,Jackson Databind,Hibernate core和Log4j(用于日志记录)。因此,我们必须选择所有这些jar的兼容版本。为了降低复杂性,Spring Boot引入了我们所谓的Spring Boot Starters。

Spring Web Project的依赖关系

Spring框架和Spring Boot框架的区别

 

<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-webmvc</artifactId>
 <version>4.2.2.RELEASE</version>
</dependency>
<dependency>
 <groupId>com.fasterxml.jackson.core</groupId>
 <artifactId>jackson-databind</artifactId>
 <version>2.5.3</version>
</dependency>
<dependency>
 <groupId>org.hibernate</groupId>
 <artifactId>hibernate-validator</artifactId>
 <version>5.0.2.Final</version>
</dependency>
<dependency>
 <groupId>log4j</groupId>
 <artifactId>log4j</artifactId>
 <version>1.2.17</version>
</dependency>

Starters 是一组方便的依赖项,可以将其包含在Spring Boot应用程序中。对于使用Spring和Hibernate,我们只需要在项目中包括spring-boot-starter-data-jpa依赖项。

Spring Boot Starter Web依赖

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Spring Boot项目有很多软件包。一旦添加了该启动程序依赖项,Spring Boot Starter Web就会预先打包所有这些文件。作为开发人员,我们无需担心这些依赖关系及其兼容版本。

Spring Boot Starter项目选项

这些是很少的入门项目,可帮助我们快速开发特定类型的应用程序。

  • spring-boot-starter-web-services:SOAP Web服务
  • spring-boot-starter-web:Web和RESTful应用程序
  • spring-boot-starter-test:单元测试和集成测试
  • spring-boot-starter-jdbc:传统JDBC
  • spring-boot-starter-hateoas:将HATEOAS功能添加到您的服务中
  • spring-boot-starter-security:使用Spring Security进行身份验证和授权
  • spring-boot-starter-data-jpa:带有Hibernate的Spring Data JPA
  • spring-boot-starter-cache:启用Spring框架的缓存支持
  • spring-boot-starter-data-rest:使用Spring Data REST公开简单的REST服务
Spring框架和Spring Boot框架的区别

 

正是有了Spring Boot,让我们告别了繁琐的配置,可以更加快速专注地开发我们的web应用。



Tags:Spring框架   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
最近呀,有小伙伴提出 自己在学习 Spring 的时候,这个源码环境有些搞不定。 那这怎么能行,不能因为这点小困难就让小伙伴放弃呀。这里咱就不在赘述读Spring源码的好处了吧,想干这...【详细内容】
2021-09-14  Tags: Spring框架  点击:(56)  评论:(0)  加入收藏
第一章:认识SpringSpring认识框架spring全家桶: spring ,springmvc,spring boot,spring cloudspring:出现在2002左右,解决企业开发的难度,减轻对项目模块之间的管理。类和类之间的...【详细内容】
2021-06-24  Tags: Spring框架  点击:(123)  评论:(0)  加入收藏
诞生的背景什么背景下诞生了该技术?不论是哪个框架,不会平白无故诞生,不会平白无故地被人所追捧,了解其背景,追根溯源。让我们把时间拨回到2002年,当时JavaEE和EJB正大行其道。Sp...【详细内容】
2021-05-31  Tags: Spring框架  点击:(180)  评论:(0)  加入收藏
译者:littlebrain4solving来源: https://blog.csdn.net/littlebrain4solving/概要说明在此篇文章中,我们根据使用@Async注解进行探索Spring对异步执行的支持。简单的把@Async注...【详细内容】
2021-03-05  Tags: Spring框架  点击:(379)  评论:(0)  加入收藏
在我们的开发中,会不可避免的遇到Bean之间循环依赖的,所谓循环依赖,就是两个或者两个以上的Bean互相持有对方,这样在程序运行调用中,会出现这种循环依赖的现象,假设是两个Bean,当程...【详细内容】
2020-12-14  Tags: Spring框架  点击:(87)  评论:(0)  加入收藏
前言学习过Spring框架的人一定都会听过Spring的IOC(控制反转) 这个概念,对于初学Spring的人来说,总觉得IOC是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spr...【详细内容】
2020-12-03  Tags: Spring框架  点击:(117)  评论:(0)  加入收藏
1、IOC和DIIOC: 控制反转 即控制权的转移,将我们创建对象的方式反转了,以前对象的创建时由我们开发人员自己维护,包括依赖关系也是自己注入。使用了spring之后,对象的创建以...【详细内容】
2020-11-03  Tags: Spring框架  点击:(58)  评论:(0)  加入收藏
今天学习内容安排如下: 切面配置的核心三步骤。 传统sprin配置和AspectJ配置都学下,xml和注解都使用下。 同时为了测试,补充说明一下spring的junit集成,几天前没来得及学的知识...【详细内容】
2020-08-19  Tags: Spring框架  点击:(64)  评论:(0)  加入收藏
今天是刘小爱自学Java的第123天。感谢你的观看,谢谢你。 学过很多面向XX编程,比如:面向过程编程,面向对象编程,面向接口编程,现在又是面向切面编程。但是不管如何,说来说去最终都是...【详细内容】
2020-08-15  Tags: Spring框架  点击:(97)  评论:(0)  加入收藏
Spring介绍Spring 是一个开源框架,是一个分层的 JavaEE 一站式框架。所谓一站式框架是指 Spring 有 JavaEE 开发的每一层解决方案。 WEB层:SpringMVC Service层:Spring的Bean管...【详细内容】
2020-03-03  Tags: Spring框架  点击:(68)  评论:(0)  加入收藏
▌简易百科推荐
近日只是为了想尽办法为 Flask 实现 Swagger UI 文档功能,基本上要让 Flask 配合 Flasgger, 所以写了篇 Flask 应用集成 Swagger UI 。然而不断的 Google 过程中偶然间发现了...【详细内容】
2021-12-23  Python阿杰    Tags:FastAPI   点击:(6)  评论:(0)  加入收藏
文章目录1、Quartz1.1 引入依赖<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version></dependency>...【详细内容】
2021-12-22  java老人头    Tags:框架   点击:(12)  评论:(0)  加入收藏
今天来梳理下 Spring 的整体脉络啦,为后面的文章做个铺垫~后面几篇文章应该会讲讲这些内容啦 Spring AOP 插件 (了好久都忘了 ) 分享下 4ye 在项目中利用 AOP + MybatisPlus 对...【详细内容】
2021-12-07  Java4ye    Tags:Spring   点击:(14)  评论:(0)  加入收藏
&emsp;前面通过入门案例介绍,我们发现在SpringSecurity中如果我们没有使用自定义的登录界面,那么SpringSecurity会给我们提供一个系统登录界面。但真实项目中我们一般都会使用...【详细内容】
2021-12-06  波哥带你学Java    Tags:SpringSecurity   点击:(18)  评论:(0)  加入收藏
React 简介 React 基本使用<div id="test"></div><script type="text/javascript" src="../js/react.development.js"></script><script type="text/javascript" src="../js...【详细内容】
2021-11-30  清闲的帆船先生    Tags:框架   点击:(19)  评论:(0)  加入收藏
流水线(Pipeline)是把一个重复的过程分解为若干个子过程,使每个子过程与其他子过程并行进行的技术。本文主要介绍了诞生于云原生时代的流水线框架 Argo。 什么是流水线?在计算机...【详细内容】
2021-11-30  叼着猫的鱼    Tags:框架   点击:(21)  评论:(0)  加入收藏
TKinterThinter 是标准的python包,你可以在linx,macos,windows上使用它,你不需要安装它,因为它是python自带的扩展包。 它采用TCL的控制接口,你可以非常方便地写出图形界面,如...【详细内容】
2021-11-30    梦回故里归来  Tags:框架   点击:(27)  评论:(0)  加入收藏
前言项目中的配置文件会有密码的存在,例如数据库的密码、邮箱的密码、FTP的密码等。配置的密码以明文的方式暴露,并不是一种安全的方式,特别是大型项目的生产环境中,因为配置文...【详细内容】
2021-11-17  充满元气的java爱好者  博客园  Tags:SpringBoot   点击:(25)  评论:(0)  加入收藏
一、搭建环境1、创建数据库表和表结构create table account(id INT identity(1,1) primary key,name varchar(20),[money] DECIMAL2、创建maven的工程SSM,在pom.xml文件引入...【详细内容】
2021-11-11  AT小白在线中  搜狐号  Tags:开发框架   点击:(29)  评论:(0)  加入收藏
SpringBoot开发的物联网通信平台系统项目功能模块 功能 说明 MQTT 1.SSL支持 2.集群化部署时暂不支持retain&will类型消 UDP ...【详细内容】
2021-11-05  小程序建站    Tags:SpringBoot   点击:(56)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条