多年来,随着新功能的增长,spring变得愈来愈复杂。只需访问页面https://spring.io/projects,咱们将看到全部在应用程序中使用的不一样功能的spring项目。若是必须启动一个新的spring项目,咱们必须添加构建路径或maven依赖项,配置application server,添加spring配置。所以,启动一个新的spring项目须要大量的工做,由于咱们目前必须从头开始作全部事情。Spring Boot是这个问题的解决方案。Spring boot构建在现有Spring框架之上。使用spring boot,咱们能够避免之前必须执行的全部样板代码和配置。所以,Spring boot帮助咱们更健壮地使用现有的Spring功能,而且只需最少的工做量。html
减小开发、测试的时间和工做量。前端
使用JavaConfig有助于避免使用XML。java
避免大量maven导入和各类版本冲突。git
提供可选的开发方法。程序员
经过提供默认开发方式进行快速开发。github
不须要单独的Web服务器。这意味着您再也不须要启动Tomcat、Glassfish或其余任何东西。web
因为没有web.xml文件,因此须要更少的配置。只需添加带@ configuration注释的类,而后能够添加带@ bean注释的方法,Spring将自动加载对象并像往常同样管理它。您甚至能够将@Autowired添加到bean方法中,使Spring autowire成为bean所需的依赖项。面试
基于环境的配置——使用这些属性,您能够将其传递到您正在使用的应用程序环境中:- dspring .profile .active={enviorement}。在加载主应用程序属性文件以后,Spring将在(application-{environment}.properties)处加载后续的应用程序属性文件。spring
Spring Boot应用程序可使用Maven和Gradle开发。sql
Spring JavaConfig是Spring社区的一个产品,它提供了一种纯java方法来配置Spring IoC容器。所以,它有助于避免使用XML配置。使用JavaConfig的优势是:
面向对象的配置。由于配置在JavaConfig中定义为类,因此用户能够充分利用Java中的面向对象特性。一个配置类能够子类化另外一个配置类,覆盖它的@Bean方法,等等。
减小或消除XML配置。已经证实了基于依赖注入原则的外部化配置的好处。然而,许多开发人员不肯意在XML和Java之间来回切换。JavaConfig为开发人员提供了一种纯java方法来配置Spring容器,这种方法在概念上相似于XML配置。从技术上讲,仅使用 JavaConfig配置类来配置容器是可行的,可是在实践中,许多人发现将JavaConfig与XML混合并匹配是理想的。
类型安全的重构能力。JavaConfig提供了一种类型安全的配置Spring容器的方法。因为Java 5.0对泛型的支持,如今能够经过类型而不是名称检索bean,不须要进行任何基于类型转换或字符串的查找。
这能够经过开发工具来实现。有了这个依赖项,您保存的任何更改都将从新启动嵌入的tomcat。Spring Boot有一个开发人员工具(DevTools)模块,它有助于提升开发人员的工做效率。Java开发人员面临的关键挑战之一是将文件更改自动部署到服务器并自动重启服务器。开发人员能够在Spring引导时从新加载更改,而没必要从新启动服务器。这将消除每次手动部署更改的须要。Spring Boot在发布第一个版本时没有这个特性。这是开发人员最须要的特性。DevTools模块彻底知足开发人员的需求。此模块将在生产环境中禁用。它还提供了H2-database控制台,以便更好地测试应用程序。使用如下依赖项
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional></dependency>
下面的示例演示了自动启动和H2 DB控制台的DevTool依赖项用法
Spring boot actuator是Spring boot framework的重要特性之一。Spring boot actuator帮助您访问生产环境中正在运行的应用程序的当前状态,在生产环境中必须检查和监视几个指标。甚至一些外部应用程序也可能使用这些服务来触发对相关人员的警报消息。actuator模块公开一组REST端点,这些端点能够做为HTTP URL直接访问,以检查状态。
Spring Boot WAR部署
Docker是什么
将基于Spring的WAR应用程序部署到Docker
将基于Spring的JAR应用程序部署到Docker
默认状况下,全部敏感的HTTP端点都是安全的,只有具备ACTUATOR角色的用户才能访问它们。安全性是使用标准HttpServletRequest.isUserInRole方法实现的。
咱们可使用-禁用安全性
management.security.enabled = false
建议仅当在防火墙后访问ACTUATOR端点时禁用安全性。
要在自定义端口上运行spring引导应用程序,能够在application.properties中指定端口。
server.port = 8090
ELK堆栈由三个开源产品组成——Elasticsearch、Logstash和Kibana from Elastic。
Elasticsearch是一个基于Lucene搜索引擎的NoSQL数据库。
Logstash是一个日志管道工具,它接受来自不一样来源的输入,执行不一样的转换,并将数据导出到不一样的目标。它是一个动态的数据收集管道,具备可扩展的插件生态系统和强大的弹性搜索协同做用
Kibana是一个可视化UI层,工做在Elasticsearch之上。
这三个项目一块儿用于各类环境中的日志分析。所以Logstash收集和解析日志、弹性搜索索引并存储这些信息,而Kibana提供了一个UI层,提供可操做的可见性。
SpringBoot为编写单元测试用例提供了@SpringBootTest
YAML是一种人类可读的数据序列化语言。它一般用于配置文件。
与属性文件相比,YAML文件的结构更加结构化,若是咱们但愿在配置文件中添加复杂的属性,那么它不会形成太大的混乱。能够看到,YAML具备分层的配置数据。
为了实现Spring Boot的安全性,咱们使用Spring - Boot -starter-security依赖项,必须添加安全配置。它只须要不多的代码。Config类必须扩展WebSecurityConfigurerAdapter并覆盖它的方法。
为了集成Spring Boot和ActiveMQ,咱们使用Spring - Boot -starter- ActiveMQ依赖项,它只须要不多的配置,没有样板代码。
为了集成Spring Boot和Apache Kafka,咱们使用Spring - Kafka依赖项。
使用Spring Boot实现分页很是简单。使用Spring Data-JPA,这是经过传递可分页的org.springframe .data.domain来实现的。可分页到存储库方法。
Swagger被普遍用于可视化api,Swagger UI为前端开发人员提供在线沙箱环境。在本教程中,咱们将使用Swagger 2规范的Springfox实现。Swagger是一种工具、规范和完整的框架实现,用于生成RESTful Web服务的可视化表示。它容许文档以与服务器相同的速度更新。当经过Swagger正肯定义时,使用者能够用最少的实现逻辑理解远程服务并与之交互。所以Swagger消除了调用服务时的猜想。
Spring Profiles容许用户根据配置文件(dev, test, prod等)注册bean。所以,当应用程序在开发中运行时,只能加载某些bean,当应用程序在生产中运行时,只能加载某些其余bean。假设咱们的需求是Swagger文档只对QA环境启用,对全部其余环境禁用。这可使用配置文件来完成。Spring Boot使得使用配置文件很是容易。
Spring Boot Batch提供了处理大量记录所必需的可重用功能,包括日志/跟踪、事务管理、做业处理统计信息、做业重启、做业跳过和资源管理。它还提供了更高级的技术服务和特性,经过优化和分区技术,这些特性将支持极高容量和高性能的批处理做业。不管是简单的仍是复杂的,大容量批处理做业均可以以高度可伸缩的方式利用该框架来处理大量信息。
答:FreeMarker是一个基于java的模板引擎,最初专一于使用MVC软件架构生成动态web页面。使用Freemarker的主要优点是彻底分离了表示层和业务层。程序员能够处理应用程序代码,而设计人员能够处理html页面设计。最后,使用freemarker,这些能够组合在一块儿,给出最终的输出页面。
Spring提供了一种很是有用的方法,可使用ControllerAdvice处理异常。咱们将实现一个ControlerAdvice类,它将处理控制器类抛出的全部异常。
缓存是本地内存的一个区域,它保存了频繁访问的数据的副本,不然获取或计算这些数据将很是昂贵。使用Hazelcast进行缓存。
是的。使用Spring Boot公开了要使用的web服务。使用契约优先的方法从wsdl生成类。
使用Spring MVC HandlerInterceptor与Spring引导
使用过不一样的starter依赖项,如spring-boot-starter-activemq依赖项、spring-boot-starter-security依赖项、spring-boot-starter-web依赖项。
这有助于减小依赖项的数量,并减小版本组合。
CSRF表明跨站请求伪造。它是一种攻击,迫使最终用户在其当前已通过身份验证的web应用程序上执行不须要的操做。CSRF攻击专门针对状态更改请求,而不是数据窃取,由于攻击者没法看到对伪造请求的响应。
gzip是一种文件格式,是一种用于文件压缩和解压缩的软件应用程序。
已将Apache Camel与Spring引导集成。使用Apache Camel Spring启动启动依赖项。
JSP是为网页量身定作的,Freemarker模板是一种更通用的模板语言——它能够用来生成html、纯文本、电子邮件等。
WebSocket是一种计算机通讯协议,经过单个TCP链接提供全双工通讯通道。
WebSocket是双向的——使用WebSocket客户端或服务器均可以发起发送消息。
WebSocket是全双工的——客户端和服务器之间的通讯是相互独立的。
单个TCP链接——初始链接使用HTTP,而后将此链接升级为基于套接字的链接。而后,这个单一链接将用于将来的全部通讯
轻- WebSocket消息数据交换比http轻得多。
Spring Boot + WebSockets的例子
在软件开发过程当中,跨越应用程序多个点的功能称为横切关注点。这些横切关注点不一样于应用程序的主要业务逻辑。所以,将这些横切关注点从业务逻辑中分离出来是面向方面编程(AOP)的切入点。
apache Kafka是一个分布式发布-订阅消息传递系统。它是一个可伸缩的、容错的、发布-订阅消息传递系统,使咱们可以构建分布式应用程序。这是一个Apache顶级项目。Kafka适用于离线和在线的消息消费。
Spring Boot提供了actuator 端点来监控单个微服务的指标。这些端点对于获取关于应用程序的信息很是有帮助,好比应用程序是否启动,它们的组件(如数据库等)是否正常工做。可是,使用actuator 接口的一个主要缺点或困难是,咱们必须逐个命中这些接口,以了解应用程序的状态或健康情况。假设微服务涉及50个应用程序,管理员将不得不命中全部50个应用程序的actuator 端点。为了帮助咱们处理这种状况,咱们将使用位于https://github.com/codecentric/springing-boot-admin的开源项目。
它构建在Spring Boot Actuator之上,提供了一个web UI,使咱们可以可视化多个应用程序的指标。
使用过Netflix Eureka等Spring Cloud组件进行服务注册,Ribbon用于负载平衡。
Spring Boot + Cloud Components
Spring Cloud interview Questions
Deploying Spring Boot Application to PCF
Pivotal Cloud Foundry Tutorial - Deploying Spring Boot + MySQL Application to PCF
Pivotal Cloud Foundry Tutorial - Deploying Spring Boot + RabbitMQ Application to PCF
针对于上面的文章我总结出了互联网公司java程序员面试涉及到的绝大部分面试题及答案作成了文档和架构视频资料免费分享给你们(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术资料),但愿能帮助到您面试前的复习且找到一个好的工做,也节省你们在网上搜索资料的时间来学习。
分享+关注我,点击进入【Java高级互联网架构:964357187】免费领取面试资料
合理利用本身每一分每一秒的时间来学习提高本身,不要再用"没有时间“来掩饰本身思想上的懒惰!趁年轻,使劲拼,给将来的本身一个交代!
做者:Java架构之路 连接:https://www.jianshu.com/p/557efae11c6f 来源:简书 简书著做权归做者全部,任何形式的转载都请联系做者得到受权并注明出处。