-
什么是 JavaConfig
- Spring JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯Java 方法。因此它有助于避免使用 XML 配置。使用 JavaConfig 的优点在于:
- 面向对象的配置。由于配置被定义为 JavaConfig 中的类,因此用户可以充分利用 Java 中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean 方法等。
- 减少或消除 XML 配置。基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在 XML 和 Java 之间来回切换。JavaConfig 为开发人员提供了一种纯 Java 方法来配置与 XML 配置概念相似的 Spring 容器。从技术角度来讲,只使用 JavaConfig 配置类来配置容器是可行的,但实际上很多人认为将JavaConfig 与 XML 混合匹配是理想的
- 类型安全和重构友好。JavaConfig 提供了一种类型安全的方法来配置 Spring容器。由于 Java 5.0 对泛型的支持,现在可以按类型而不是按名称检索 bean,不需要任何强制转换或基于字符串的查找。
- Spring JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯Java 方法。因此它有助于避免使用 XML 配置。使用 JavaConfig 的优点在于:
-
如何重新加载 Spring Boot 上的更改,而无需重新启动服务器
- 可以使用 DEV 工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat 将重新启动。Spring Boot 有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java 开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。开发人员可以重新加载 Spring Boot 上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring Boot 在发布它的第一个版本时没有这个功能。这是开发人员最需要的功能。DevTools 模块完全满足开发人员的需求。该模块将在生产环境中被禁用。它还提供 H2 数据库控制台以更好地测试应用程序
- org.springframework.bootspring-boot-devtoolstrue
-
Spring Boot 中的监视器是什么
- Spring boot actuator 是 spring 启动框架中的重要功能之一。Spring boot 监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为 HTTP URL 访问的REST 端点来检查状态
-
如何在 Spring Boot 中禁用 Actuator 端点安全性
- 默认情况下,所有敏感的 HTTP 端点都是安全的,只有具有 ACTUATOR 角色的用户才能访问它们。安全性是使用标准的 HttpServletRequest.isUserInRole 方法实施的
-
如何在自定义端口上运行 Spring Boot 应用程序?
- 为了在自定义端口上运行 Spring Boot 应用程序,您可以在application.properties 中指定端口
- server.port = 8090
-
什么是 YAML
- YAML 是一种人类可读的数据序列化语言。它通常用于配置文件
- 与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML 文件就更加结构化,而且更少混淆。可以看出 YAML 具有分层配置数据
-
如何实现 Spring Boot 应用程序的安全性
- 为了实现 Spring Boot 的安全性,我们使用 spring-boot-starter-security 依赖项,并且必须添加安全配置。它只需要很少的代码。配置类将必须扩展WebSecurityConfigurerAdapter 并覆盖其方法
-
什么是 Swagger?你用 Spring Boot 实现了它吗
- Swagger 广泛用于可视化 API,使用 Swagger UI 为前端开发人员提供在线沙箱。Swagger 是用于生成 RESTful Web 服务的可视化表示的工具,规范和完整框架实现。它使文档能够以与服务器相同的速度更新。当通过 Swagger 正确定义时,消费者可以使用最少量的实现逻辑来理解远程服务并与其进行交互。因此,Swagger消除了调用服务时的猜测
-
什么是 Spring Profiles
- Spring Profiles 允许用户根据配置文件(dev,test,prod 等)来注册 bean。因此,当应用程序在开发中运行时,只有某些 bean 可以加载,而在 PRODUCTION中,某些其他 bean 可以加载。假设我们的要求是 Swagger 文档仅适用于 QA 环境,并且禁用所有其他文档。这可以使用配置文件来完成。Spring Boot 使得使用配置文件非常简单
-
什么是 Spring Batch?
- Spring Boot Batch 提供可重用的函数,这些函数在处理大量记录时非常重要,包括日志/跟踪,事务管理,作业处理统计信息,作业重新启动,跳过和资源管理。它还提供了更先进的技术服务和功能,通过优化和分区技术,可以实现极高批量和高性能批处理作业。简单以及复杂的大批量批处理作业可以高度可扩展的方式利用框架处理重要大量的信息
-
什么是 FreeMarker 模板
- FreeMarker 是一个基于 Java 的模板引擎,最初专注于使用 MVC 软件架构进行动态网页生成。使用 Freemarker 的主要优点是表示层和业务层的完全分离。程序员可以处理应用程序代码,而设计人员可以处理 html 页面设计。最后使用freemarker 可以将这些结合起来,给出最终的输出页面
-
什么是 CSRF 攻击
- CSRF 代表跨站请求伪造。这是一种攻击,迫使最终用户在当前通过身份验证的Web 应用程序上执行不需要的操作。CSRF 攻击专门针对状态改变请求,而不是数据窃取,因为攻击者无法查看对伪造请求的响应。
-
什么是 WebSockets
- WebSocket 是一种计算机通信协议,通过单个 TCP 连接提供全双工通信信道
- WebSocket 是双向的 -使用 WebSocket 客户端或服务器可以发起消息发送
- WebSocket 是全双工的 -客户端和服务器通信是相互独立的
- 单个 TCP 连接 -初始连接使用 HTTP,然后将此连接升级到基于套接字的连接。然后这个单一连接用于所有未来的通信
- Light -与 http 相比,WebSocket 消息数据交换要轻得多
-
我们如何监视所有 Spring Boot 微服务?
- Spring Boot 提供监视器端点以监控各个微服务的度量。这些端点对于获取有关应用程序的信息(如它们是否已启动)以及它们的组件(如数据库等)是否正常运行很有帮助。但是,使用监视器的一个主要缺点或困难是,我们必须单独打开应用程序的知识点以了解其状态或健康状况。想象一下涉及 50 个应用程序的微服务,管理员将不得不击中所有 50 个应用程序的执行终端
-
负载平衡的意义什么
- 在计算中,负载平衡可以改善跨计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一资源的过载。使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务器进程
-
微服务的 优点
- 独立开发 – 所有微服务都可以根据各自的功能轻松开发
- 独立部署 – 基于其服务,可以在任何应用程序中单独部署它们
- 故障隔离 – 即使应用程序的一项服务不起作用,系统仍可继续运行
- 混合技术堆栈 – 可以使用不同的语言和技术来构建同一应用程序的不同服务
- 粒度缩放 – 单个组件可根据需要进行缩放,无需将所有组件缩放在一起
-
微服务有哪些特点
- 解耦 – 系统内的服务很大程度上是分离的。因此,整个应用程序可以轻松构建,更改和扩展
- 组件化 – 微服务被视为可以轻松更换和升级的独立组件
- 业务能力 – 微服务非常简单,专注于单一功能
- 自治 – 开发人员和团队可以彼此独立工作,从而提高速度
- 持续交付 – 通过软件创建,测试和批准的系统自动化,允许频繁发布软件
- 责任 – 微服务不关注应用程序作为项目。相反,他们将应用程序视为他们负责的产品
- 分散治理 – 重点是使用正确的工具来做正确的工作。这意味着没有标准化模式或任何技术模式。开发人员可以自由选择最有用的工具来解决他们的问题
- 敏捷 – 微服务支持敏捷开发。任何新功能都可以快速开发并再次丢弃
-
微服务架构具有以下组件:
- 客户端 – 来自不同设备的不同用户发送请求。
- 身份提供商 – 验证用户或客户身份并颁发安全令牌。
- API 网关 – 处理客户端请求。
- 静态内容 – 容纳系统的所有内容。
- 管理 – 在节点上平衡服务并识别故障。
- 服务发现 – 查找微服务之间通信路径的指南。
- 内容交付网络 – 代理服务器及其数据中心的分布式网络。
- 远程服务 – 启用驻留在 IT 设备网络上的远程访问信息
-
微服务架构的优缺点是什么
-
优点
- 自由使用不同的技术
- 每个微服务都侧重于单一功能
- 支持单个可部署单元
- 允许经常发布软件
- 确保每项服务的安全性
- 多个服务是并行开发和部署的
-
缺点
- 增加故障排除挑战
- 由于远程呼叫而增加延迟
- 增加了配置和其他操作的工作量
- 难以保持交易安全
- 艰难地跨越各种边界跟踪数据
- 难以在服务之间进行编码
-
-
单片,SOA 和微服务架构有什么区别
- 单片架构类似于大容器,其中应用程序的所有软件组件组装在一起并紧密 封装
- 一个面向服务的架构是一种相互通信服务的集合。通信可以涉及简单的数据传递,也可以涉及两个或多个协调某些活动的服务
- 微服务架构是一种架构风格,它将应用程序构建为以业务域为模型的小型自治服务集合
-
SOA 和微服务架构之间的主要区别是什么
-
SOA
- 遵循尽可能多的共享架构方法
- 重要性在于业务功能重用
- 他们有共同的治理和标准
- 使用企业服务总线ESB进行通信
- 他们支持多种消息协议
- 多线程,有更多的开销捞出沥IO
- 最大化应用程序服务可重用性
- 系统的变化需要修改整体
- DevOps正在变得流行,但还不是主流
-
微服务
- 遵循尽可能少分享的架构方法
- 重要性在于有界背景的概念
- 他们专注于人们的合作和其他选择的自由
- 简单的消息系统
- 他们使用轻量级协议,如HTTP/REST等
- 单线程,通常使用EventLoop功能进行非锁定IO处理
- 专注于解耦
- 现代关系数据库更常用
- 系统的变化是创造一种新的服务
- 专注于DevOps持续交付
-
-
什么是耦合
- 组件之间依赖关系强度的度量被认为是耦合。一个好的设计总是被认为具有高内聚力和低耦合性
-
什么是 REST / RESTful 以及它的用途是什么
- Representational State Transfer(REST)/ RESTful Web 服务是一种帮助计算机系统通过 Internet 进行通信的架构风格。这使得微服务更容易理解和实现
- 微服务可以使用或不使用 RESTful API 实现,但使用 RESTful API 构建松散耦合的微服务总是更容易。
-
什么是 Spring 引导的执行器
- Spring Boot 执行程序提供了 restful Web 服务,以访问生产环境中运行应用程序的当前状态。在执行器的帮助下,您可以检查各种指标并监控您的应用程序
-
什么是 Spring Cloud
- 根据 Spring Cloud 的官方网站,Spring Cloud 为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,领导选举,分布式会话,集群状态)
-
Spring Cloud 解决了哪些问题
- 与分布式系统相关的复杂性 – 包括网络问题,延迟开销,带宽问题,安全问题
- 处理服务发现的能力 – 服务发现允许集群中的进程和服务找到彼此并进行通信
- 解决冗余问题 – 冗余问题经常发生在分布式系统中
- 负载平衡 – 改进跨多个计算资源(例如计算机集群,网络链接,中央处理单元)的工作负载分布
- 减少性能问题 – 减少因各种操作开销导致的性能问题
-
在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?
- @WebMvcTest(value = ToTestController.class,secure=false)
- 在测试目标只关注 Spring MVC 组件的情况下,WebMvcTest 注释用于单元测试Spring MVC 应用程序。在上面显示的快照中,我们只想启动 ToTestController。执行此单元测试时,不会启动所有其他控制器和映射
-
您对 Distributed Transaction 有何了解
- 分布式事务是指单个事件导致两个或多个不能以原子方式提交的单独数据源的突变的任何情况。在微服务的世界中,它变得更加复杂,因为每个服务都是一个工作单元,并且大多数时候多个服务必须协同工作才能使业务成功
-
什么是 Idempotence 以及它在哪里使用
- 幂等性是能够以这样的方式做两次事情的特性,即最终结果将保持不变,即好像它只做了一次
- 用法:在远程服务或数据源中使用 Idempotence,这样当它多次接收指令时,它只处理指令一次
-
什么是客户证书
- 客户端系统用于向远程服务器发出经过身份验证的请求的一种数字证书称为客户端证书。
- 客户端证书在许多相互认证设计中起着非常重要的作用,为请求者的身份提供了强有力的保证
-
什么是 OAuth?
- OAuth 代表开放授权协议。这允许通过在 HTTP 服务上启用客户端应用程序(例如第三方提供商 Facebook,GitHub 等)来访问资源所有者的资源。因此,您可以在不使用其凭据的情况下与另一个站点共享存储在一个站点上的资源
-
Web,RESTful API 在微服务中的作用是什么
- 微服务架构基于一个概念,其中所有服务应该能够彼此交互以构建业务功能。因此,要实现这一点,每个微服务必须具有接口。这使得 Web API 成为微服务的一个非常重要的推动者。RESTful API 基于 Web 的开放网络原则,为构建微服务架构的各个组件之间的接口提供了最合理的模型
-
Docker 的目的是什么?
- Docker 提供了一个可用于托管任何应用程序的容器环境。在此,软件应用程序和支持它的依赖项紧密打包在一起
- 这个打包的产品被称为 Container,因为它是由 Docker 完成的,所以它被称为 Docker 容器
-
什么是持续集成(CI)?
- **持续集成(CI)**是每次团队成员提交版本控制更改时自动构建和测试代码的过程。这鼓励开发人员通过在每个小任务完成后将更改合并到共享版本控制存储库来共享代码和单元测试。
-
架构师在微服务架构中的角色是什么
- 决定整个软件系统的布局。
- 帮助确定组件的分区。因此,他们确保组件相互粘合,但不紧密耦合。
- 与开发人员共同编写代码,了解日常生活中面临的挑战。
- 为开发微服务的团队提供某些工具和技术的建议
- 提供技术治理,以便技术开发团队遵循微服务原则。
springBoot
最新推荐文章于 2024-07-17 20:51:37 发布