我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何深入实践Spring Boot

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何深入实践Spring Boot

如何深入实践Spring Boot,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

简单易用的 Spring Boot,无疑是 Java 开发初学者的指路明灯,更是资深 Java 开发者的得力助手。快速开发是研发 Spring Boot 的初衷,这不但是一个开发团队的终生追求,也是一个企业解放生产力、提高生产效率的保障。

Spring Boot 的组件化整合规则,完美地整合了云应用开发工具,使其在云计算领域中处于领先地位,为创建高可用和高性能的服务提供了更加简便和快捷的方法。

Spring Boot 是从 Spring 框架发展起来的,所以对于使用 Spring 框架的庞大用户群体来说,随着 Spring Boot 的普及使用,将使众多开发者成为它的拥趸。

一、Spring Boot 适用场景

1. 企业项目开发的时候,Spring Boot 有哪些使用场景呢,已知的坑是什么呢?

SSO,分布式文件系统,微服务使用等等,在企业版应用中,这些都是非常顶用的。如果硬说有坑的话,就是服务多了,服务部署和运维管理必须要上一个档次,否则就会显得混乱起来。

2. 个人感觉,从快速构建方面确实很高效,而且这样框架也是经过了很多实践之后,结晶的产品。但是,对于新人来说,直接应用 Spring Boot,还是感觉不是很理想,可能会使新人对于 Spring 框架的理解上产生阻碍。对于 Spring Boot 本身,还是非常不错的,云部署,快速构建都很不错。我的问题是,公司对于 Spring Boot 的应用有什么要求吗?一般开发会在什么情况下使用它?对于企业级的开发是否也有要求?

Spring Boot 对背景知识没有特别要求,对于新人来说,搭建好项目让其跟随开发,更加容易入手。对于公司的要求,主要看工程的规模和部署的方式,如果使用 Docker 部署并需要设置负载均衡等对运维人员和服务器的要求会高一些。

3. 经常看到 Spring Boot 和微服务关联起来,是因为 Spring Boot 开发和部署比较快么,能具体说说么?

Spring Boot 确实是以快速开发为目标而设计的,它的简单易用的特性确实减轻了开发者的负担,从而可以提高开发的生产率。你的问题需要全面理解一下 Spring Boot,可以通过它的官方网站进行一些了解。

完整的参考 DEMO — 不写一行代码即运行一个应用

4. 这个框架适合开发什么类型的项目

最适合用来开发 Web 应用项目。

二、Spring Boot 与 jar

1. 已经使用 Spring Boot 有几个月了,也开始在使用 Spring Boot 搭建公司的基础系统。我理解的 Spring Boot 应该是提倡以 jar 的形式部署,但这种方式在包的体积过大的情况下部署太慢了,之前我们的业务和服务器都在国外,上传的时候速度慢得一塌糊涂,除了改成 war 发布,还有什么其他办法么?

其实最好的方式,还是使用 jar,然后结合使用 Docker 来发布。如果一个项目的 jar 包过大的话,要看看造成这种情况的主要原因是什么。是不是 jar 包中包含的资源文件太多,还是项目包含的业务太复杂,如果是前种原因,考虑优化一些图片资源,或者使用分布式文件系统来存储图片资源。如果是后一种原因,是不是考虑将原项目使用模块化方式进行细分。

@采蘑菇的大叔 贡献的 DEMO http://git.oschina.net/icer/iblog。用 SpringBoot 搭了个架子,整合了 freemarker 和 mybatis。

2. Spring Boot 集成了服务器,以 jar 文件发布,减少对外部文件和环境依赖。但长期集成导致体积过大,这的确是个问题,能不能考虑做一些工具对 jar 进行减肥呢?

这就要分析一下造成 jar 过大的原因是什么,如果是因为资源文件太多造成的,那就要优化一些图片的设计,或使用其它方式来链接资源文件,如果是因为一个项目包含的业务太多太复杂造成的,就要考虑是否可以将项目进行拆分。

3. 如果是用 Spring Boot 来做成 jar 服务启动,怎么衡量服务粒度。因为每个服务都要运行 Spring,或者也会加个 dubbo 的依赖等等。跑起多个实例,这就重复了。其实就是单体应用跟分布式应用的点。

主要还是看你怎样配置服务,如果使用 Spring Cloud 的服务发现来管理服务,可以通过负载均衡的配置支持多个服务同时对外提供服务。

4. Spring Boot 同样支持以标准的 war 方式部署应用,只是在启动类上需要进行细微的调整,并不强调始终以 jar 方式部署。

Spring Boot 应该是鼓励以 jar 的方式部署,随着 Spring Boot 一起来的应该是想推动微服务。个人见解,仅供讨论。(@采蘑菇的大叔)

5. 使用 Spring Boot 的时候,页面文件会被打包到 jar 中,如果只更新页面文件,又要对 jar 进行打包上传。有没有简单的方法?类似原先的 Tocmat 部署就可以直接修改页面文件。不需要重启的方法?

可以使用 war 方式部署 。

6. Spring Boot 项目如何做到 libs jar 和  app jar 分开,很多时候,我只是更新应用层代码,本地编译好上传上去,启动的时候通过脚本启动,那么如何将 libs 和 app 分别打包并启动呢?

使用 war 方式发布就可以实现你的要求。

三、Spring Boot 与 Docker

1. 请简单介绍一下 Spring Boot 和 Docker 结合

真要简单地说:将 Spring Boot 项目打包成 jar,然后通过 Docker 进行部署。用 Spring Boot 开发的项目,非常适合用 Docker 来部署。

这两个东西之间没有任何关系。Spring Boot 主要的目的是简化开发和部署过程中配置文件的使用,使用了很多约定俗成的规则,按照这些约定的规则来开发,可以大大减少配置文件的使用,甚至完全不使用配置文件都是可能的。Docker 只是把运行环境,像 OS、JVM、Nginx 等等打包到一起的个工具而已。把 Spring Boot 生成的可执行的 jar 包放进这个运行环境中来运行。这两个工具都只是简化了开发和运维的繁杂过程,使用了很多自动化处理的技术而已。(@清靜無虞)

2. Spring Boot 从开发到部署的最佳实践 ,是否必须依赖容器技术,如何平滑过渡到 Docker 容器上?

Spring Boot 并不依赖 Docker 容器,也可以使用 war 方式或者按照传统的方式直接使用文件系统来发布,只是使用 Docker,更能发挥它在各个方面优势。

3. 能分享下 Spring Cloud 和 Docker 部署方面的经验吗?

使用 Docker 发布 Spring Boot 项目(https://my.oschina.net/syic/blog/799656)

四、旧的项目迁移至 Spring Boot

1. 旧的项目转到 Spring Boot 有什么条件?

不需要什么条件,使用 Spring Boot,最好是对原来的项目进行重新设计,或者使得原来的逻辑进行重建。

2. 是不是微服务架构比较适合用 Spring Boot?那对于老的系统或代码,怎么转到 Spring Boot?

所有使用 Web 方式开发的项目都适合使用 Spring Boot 框架,并从中获益,微服务开发是它的一大特色。旧系统的代码不能转换,可以使用原来的业务逻辑进行重建。

五、与相关的项目对比

1. 几年前做开发还是用的 Spring,包括 Spring 的 Bean 工厂方案还有 SpringMVC,现在主要业务的开发一般用的公司自研框架,所以对 Spring 感觉比较生疏了,我就想了解了解,Spring Boot 同几年前的 Spring 相比,都有哪些方面的发展和变化,能大概讲讲吗?

Spring Boot 是在 Spring 的基础建立起来的,保留了 Spring 的一些精髓,同时也摒弃了一些糟粕,表现在:

  1. 统一工程配置,可以不使用 XML 配置

  2. 使用一些组件,具有自动配置的功能

  3. 内嵌了 Tomcat,性能指标等服务

  4. 更方便独立部署或使用 Docker 配置成高可用和高性能的平台

2. Spring Boot 与传统 SSH 框架的主要区别在哪些方面?

Spring Boot 能最大限度地简化配置,也可以嵌入 Tcomcat 等服务,并且在开发企业级应用、分布式应用等方面更加得心应手,更加难能可贵的是使用非常简单,非常适合快速开发的需要,符合软件工程构件化发展的目标。

3. Spring Boot 和 Spring MVC 有什么区别?

Spring MVC 还是属于 Spring 框架的,Spring Boot 是在 Spring 的基础之上建立的一个全新开发框架。

4. Spring Boot 构建微服务,和目前一些新的例如 light java framework , sparkjava 在构建微服务上有什么优势?

在 Spring Boot 家族中,使用云应用开发工具集 Spring Cloud 开发微服务应用,具有得天独厚的优势。这里所说的微服务,是指功能强大,业务单一的分布式应用系统,并非简单指项目的微型结构。

5. 用了 Spring Boot 是不是就不用再搞 Spring、SpringMVC、Hibernate、Struts、MyBatis 这些了?

对的,十分正确。对于数据库来说,使用 JPA 就能一网打尽了。

6. Spring Boot 还是很喜欢的,简化了不少配置,但实际中微服务的划分是个问题。

服务的划分这个和 Spring Boot 没有任何关系。微服务的一个难点就是服务的划分,有些服务是按技术特点来划分,比如像 push 服务、sms 服务等。有些是按业务特点来划分,像订单服务等,有些根据实际情况还进行服务的分层。

7. 使用 Spring Boot,其他的必须框架还需要配置吗?

如果使用 Maven 或其它项目管理工具,都可以在工程配置引用依赖包。

六、使用中遇到的问题

1. Spring Boot 有多种 Web 容器如默认的 Tomcat, Undertow 等,从综合上使用哪一个性能更好。Undertow 如何像 Tomcat一样配置 http 自动跳转到 https?

跟 Tomcat 相比,Jetty 会显得更加小巧一些,但是综合来看,还是使用默认的 Tomcat 比较实在。

Undertow 比 Tomcat 性能要好得多,https 一般不需要在 Undertow 这一层来配。一般都会在 Undertow 之前加一个 Nginx,在 Nginx中配置就行了。(@清靜無虞)

性能测试 Undertow 比 Tomcat 稍好一些。稳妥可以用 Tomcat,想改换一下思路可以用 Undertow。http redirect to https 用 Undertow 有折中的办法是引入 Spring Security。不过一般还是应该前端配 Nginx 或者 Apache Http Server 对外开放 https 服务,内部用 http 做反向代理通道协议。(@二的基本算合格)

http://menelic.com/2016/01/06/java-rest-api-benchmark-tomcat-vs-jetty-vs-grizzly-vs-undertow/看了这个博客,虽然 Tomcat 慢一些,但是实际业务中 Tomcat 并不会是瓶颈,使用 Tomcat 也是一个很好的选择,毕竟使用了这么多年了,对各项配置也比较熟悉了。(@梦朝思夕)

2.

  1. 我用 Spring Boot 很久了,从 1.2.5 开始用,最近一个项目预计使用分布式高可用,我也把该弄的框架都弄好了,可是最后客户取消分布式高可用,采用传统模式。Java 只负责后台接口,APP 接受数据,我现在有个权限问题,原来用的 Spring Security 做的权限前后端分离,现在只有接口,这个权限怎么进行管理,我看里面有回答说用 Spring Cloud 进行权限控制,这个 Cloud 对传统模式是否繁重?

  2. 定时任务的调度,自有 Quartz 调度是否支持集群,多个节点(非集群 ng 分发),但是定时任务我想让他集群,不允许多个节点都启动调度任务,只能某一节点不能执行其他节点才能触发,这个需要用 zookeeper 之类工具进行监测么?

对于企业级应用来说,权限管理建议使用 SSO 的方式来实现,这在《深入实践 Spring Boot》一书中有实际的使用实例,主要也是使用了 Spring Security 和 OAuth3 的技术。

Zookeeper 和 Spring-Cloud-Eureka 一样,都是一个服务注册和发现的管理工具,而 Spring-Cloud-Eureka 在 Spring Boot 中使用,更加适合用来调度使用 Spring Cloud 开发的微服务。至于你所说的定时任务调度,应该不属于这个范围吧。

折腾权限会有个 csrf 的问题,楼主要是弄好了分享一下心得呗。问题:开启 csrf 的话,渲染页面模版的时候,会生成一个 csrf 字符串,如果 post 提交可以带上,但如果写出是 json 的接口,就取不到这个 csrf 了,那么在提交 post 请求的时候就会报一个 csrf 相关的错误。(@朋也)

3. Spring Boot 如何更好的更简洁的实现多表关联查询?

在实体建模时为多表建立关联关系,这样查询一个实体对象时就可以连带查出它关联的其它对象,即实现多表关联查询。

4.

  1. 使用 Spring Boot 搭建的微服务是否考虑服务之间的权限,例如访问权限,若需要,Spring Boot 本身有提供比较好的解决方案吗?

  2. Spring Boot 目前对于 Spring Cloud 生态有很好的支持和定制化吗?

Spring Boot 及其前身 Spring,对于任何第三方都能提供很好的支持,更不用说对 Spring Cloud 的支持了。对于系统的安全管理和访问控制,推荐使用 Spring Cloud 的 SSO,它与 Spring Boot 框架能够达到非常融洽的效果。

5. 在使用 Spring Boot 来开发公司产品的时候,根据业务进行拆分,这样最后部署的时候会出现 N 个 jar。这样的情况下,除了用 Docker 来部署还有别的什么方式吗?在部署方面有没有哪些需要注意的地方?

N 好像有点大吧,原来的工程分成十几个项目,已经很不错了。使用 Spring Boot 的好处是,可以统一项目配置,和使用发现服务,并更好地管理负载均衡,提高系统的高可用性。

6. 请问用 jar 的方式发布,如何在系统重启后能自动启动?

Spring Boot 打包的是个可运行的 jar,使用 Java 命令来启动。写个 shell 脚本来启动就行了,把 shell 脚本设置为开机运行。不管使用哪种方式部署,自动启动都需要编写脚本来实现。(@清靜無虞)

7. 在 Spring Boot 中,如何通过参数配置,设置 Tomcat 的 maxConnections 属性?

在 Spring Boot 的配置文件中好像没有这个配置参数,如果一定要这个配置,也可以将项目用 war 方式发布,然后像以前配置 Tomcat 一样配置。

8. Spring Boot 做 REST API 开发如何?如果 Controller 接受的参数模型比较复杂,基本是对象一层套一层,那如何定制这类的 API 接口?

  1. 在存储库接口中使用注解 @RepositoryRestResource,就能直接提供 Rest API

  2. 在控制器中使用 @RestController,其中所定义的 URL 就同时是一个 Rest 资源

9. Spring Boot 在开发阶段有热部署吗?类似 JRebel 那种

如果设置成连接 Tomcat 服务器来启动应用,可以设置成热部署的方式。

关于如何深入实践Spring Boot问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何深入实践Spring Boot

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何深入实践Spring Boot

如何深入实践Spring Boot,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。简单易用的 Spring Boot,无疑是 Java 开发初学者的指路明灯,更是资深 Jav
2023-06-19

深入理解Java Spring Boot Security:原理与最佳实践

Spring Boot Security是一个功能强大的安全框架,为Java应用程序提供了保护机制。它实现了多种常见的安全功能,例如身份验证、授权、密码编码、会话管理等。本文将深入探索Spring Boot Security的原理和最佳实践,帮助开发人员构建更加安全的应用程序。
深入理解Java Spring Boot Security:原理与最佳实践
2024-02-02

JavaEE微框架Spring Boot深入解读

前言spring框架作为JavaEE框架领域的一款重要的开源框架,在企业应用开发中有着很重要的作用,同时Spring框架及其子框架很多,所以知识量很广。Spring Boot:一款Spring框架的子框架,也可以叫微框架,是2014年推出的
2023-05-31

Spring Boot如何实现WebSocket

本篇内容介绍了“Spring Boot如何实现WebSocket”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是 WebSocket ?
2023-06-30

深入理解spring boot异步调用方式@Async

本文主要给大家介绍了关于spring boot异步调用方式@Async的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍:1.使用背景在日常开发的项目中,当访问其他人的接口较慢或者做耗时任务时,不想程序一直卡在耗时任务上,想程序能
2023-05-31

ioc如何利用Spring boot实现

这篇文章将为大家详细讲解有关ioc如何利用Spring boot实现,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。项目结构实际上三四个类完全能搞定这个简单的ioc容器,但是出于可扩展性的考虑
2023-05-31

使用spring-boot如何实现整合dubbo中的Spring-boot-dubbo-starter

使用spring-boot如何实现整合dubbo中的Spring-boot-dubbo-starter?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在application.p
2023-05-31

深入浅析JPA在Spring Boot中的使用方法

深入浅析JPA在Spring Boot中的使用方法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。什么是JPA一说JavaWeb,很多小伙伴都知道SSH,这个H代表的就是hi
2023-05-31

Spring Boot中如何实现HTTP认证

这篇文章将为大家详细讲解有关Spring Boot中如何实现HTTP认证,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。HttpBasic 认证有一定的局限性与安全隐患,因此在实际项目中使用并
2023-06-03

spring boot拦截器如何使用spring AOP实现

本篇文章为大家展示了spring boot拦截器如何使用spring AOP实现,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在spring boot中,简单几步,使用spring AOP实现一个拦
2023-05-31

spring boot如何实现对RabbitMQ整合

本篇文章为大家展示了spring boot如何实现对RabbitMQ整合,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.Fanout Exchange介绍Fanout Exchange 消息广播的
2023-05-31

Spring Boot深入学习数据访问之Spring Data JPA与Hibernate的应用

Spring Data JPA是Spring Data的子项目,在使用Spring Data JPA之前,先了解一下Hibernate,因为Spring Data JPA是由Hibernate默认实现的
2022-11-13

Spring Boot如何整 Apache Dubbo

这篇文章将为大家详细讲解有关Spring Boot如何整 Apache Dubbo,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Apache Dubbo是一款高性能、轻量级的开源 Java RPC 框架,
2023-06-20

Spring Boot Actuator管理日志如何实现

这篇文章主要介绍“Spring Boot Actuator管理日志如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring Boot Actuator管理日志如何实现”文章能帮助大家解决问
2023-07-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录