springboot java获取版本号_深入实践Spring Boot 实战篇,大佬整理出的PDF文档

如何使用Spring Boot

本文章将会详细介绍如何使用Spring Boot。它覆盖了构建系统,自动配置和运行/部署选项等主题。我们也覆盖了一些Spring Boot最佳实践。尽管Spring Boot没有什么特别的(只是一个你能消费的库),但仍有一些建议,如果你遵循的话将会让你的 开发进程更容易。 如果你刚接触Spring Boot,那最好先了解一下

构建系统

强烈建议你选择一个支持依赖管理,能消费发布到Maven中央仓库的artifacts的构建系统。我们推荐你选择Maven或Gradle。

选择其他构建系统来使用Spring Boot也是可能的(比如Ant),但它们不会被很好的支持。

Maven

Maven用户可以继承 spring-boot-starter-parent 项目来获取合适的默认设置。该父项目提供以下特性:

默认编译级别为Java 1.6

源码编码为UTF-8

一个依赖管理节点,允许你省略普通依赖的 标签,继承自 spring-boot-dependencies POM。

合适的资源过滤

合适的插件配置(exec插件,surefire,Git commit ID,shade)

针对 application.properties 和 application.yml 的资源过滤

最后一点:由于默认配置文件接收Spring风格的占位符( ${...} ),Maven filtering改用 @..@ 占位符(你可以使用Maven属 性 resource.delimiter 来覆盖它)。

继承starter parent

想配置你的项目继承 spring-boot-starter-parent 只需要简单地设置 parent 为:

b12792a036de44b197517e27784d1aa9

注:你应该只需要在该依赖上指定Spring Boot版本。如果导入其他的starters,你可以放心的省略版本号。

使用没有父POMSpring Boot

不是每个人都喜欢继承 spring-boot-starter-parent POM。你可能需要使用公司标准parent,或你可能倾向于显式声明所有

Maven配置

如果你不使用 spring-boot-starter-parent ,通过使用一个 scope=import 的依赖,你仍能获取到依赖管理的好处:

11cd3904d49e4ba0acd24987aa448551

改变Java版本

31e5c7687e1848c193ed4ccc3cb29e13

使用Spring Boot Maven插件

74a6c5c56b0d4951a64067ad5edfa816

Gradle

Gradle用户可以直接在它们的 dependencies 节点处导入”starter POMs“。跟Maven不同的是,这里没有用于导入共享配置 的"超父"(super parent)。

7d5ed54453ae41ffb8ab8578cf94999b

spring-boot-gradle-plugin插件也是可以使用的,它提供创建可执行jar和从source运行项目的任务。它也添加了一 个 ResolutionStrategy 用于让你省略常用依赖的版本号:

82469934fdc4408e810a2a999bed5250

Ant

使用Apache Ant构建一个Spring Boot项目是完全可能的,然而,Spring Boot没有为它提供特殊的支持或插件。Ant脚本可以 使用Ivy依赖管理系统来导入starter POMs

Starter POMs

Starter POMs是可以包含到应用中的一个方便的依赖关系描述符集合。你可以获取所有Spring及相关技术的一站式服务,而 不需要翻阅示例代码,拷贝粘贴大量的依赖描述符。例如,如果你想使用Spring和JPA进行数据库访问,只需要在你的项目

中包含 spring-boot-starter-data-jpa 依赖,然后你就可以开始了。

该starters包含很多你搭建项目,快速运行所需的依赖,并提供一致的,管理的传递依赖集。

名字有什么含义:所有的starters遵循一个相似的命名模式: spring-boot-starter-* ,在这里 * 是一种特殊类型的应用程序。

该命名结构旨在帮你找到需要的starter。很多IDEs集成的Maven允许你通过名称搜索依赖。例如,使用相应的Eclipse或STS

插件,你可以简单地在POM编辑器中点击 ctrl-space ,然后输入"spring-boot-starter"可以获取一个完整列表。

下面的应用程序starters是Spring Boot在 org.springframework.boot 组下提供的:

13.1. Spring Boot application starters

65762093e02847329b3212a4d7bdcfb0
21d9070c13c840a8ae703e9e6bbdbe7c
781231c4f4f3462e950b25fa75f68aa9

除了应用程序的starters,下面的starters可以用于添加生产准备的特性。

Spring Boot生产准备的starters

eb155a4b35814fff9cb57fed33cc18ca

最后,Spring Boot包含一些可用于排除或交换具体技术方面的starters。

Spring Boot technical starters

bdfa0b726bb54a4a84f663ff194cd7ca

注:查看GitHub上位于 spring-boot-starters 模块内的README文件,

组织你的代码

Spring Boot不需要使用任何特殊的代码结构,然而,这里有一些有用的最佳实践。

使用"default"包

当类没有包含 package 声明时,它被认为处于 default package 下。通常不推荐使用 default package ,并应该避免使用它。因

为对于使用 @ComponentScan , @EntityScan 或 @SpringBootApplication 注解的Spring Boot应用来说,来自每个jar的类都会被读 取,这会造成一定的问题。

注:我们建议你遵循Java推荐的包命名规范,使用一个反转的域名(例如 com.example.project )。

定位main应用类

我们通常建议你将main应用类放在位于其他类上面的根包(root package)中。通常使用 @EnableAutoConfiguration 注解你的 main类,并且暗地里为某些项定义了一个基础“search package”。例如,如果你正在编写一个JPA应用,

被 @EnableAutoConfiguration 注解的类所在包将被用来搜索 @Entity 项。

使用根包允许你使用 @ComponentScan 注解而不需要定义一个 basePackage 属性。如果main类位于根包中,你也可以使 用 @SpringBootApplication 注解。

下面是一个典型的结构:

27e03ffd656c42a38f7f34b4ddee7b64

Application.java 文件将声明 main 方法,还有基本的 @Configuration 。

ff7e7c1d16bf42159ff8b5cdb66b6a35

配置类

Spring Boot提倡基于Java的配置。尽管你可以使用一个XML源来调用 SpringApplication.run() ,我们通常建议你使 用 @Configuration 类作为主要源。一般定义 main 方法的类也是主要 @Configuration 的一个很好候选。

注:很多使用XML配置的Spring配置示例已经被发布到网络上。你应该总是尽可能的使用基于Java的配置。搜索查 看 enable* 注解就是一个好的开端。

导入其他配置类

你不需要将所有的 @Configuration 放进一个单独的类。 @Import 注解可以用来导入其他配置类。另外,你也可以使 用 @ComponentScan 注解自动收集所有的Spring组件,包括 @Configuration 类。

导入XML配置

如果你绝对需要使用基于XML的配置,我们建议你仍旧从一个 @Configuration 类开始。你可以使用附加的 @ImportResource 注 解加载XML配置文件。

自动配置

Spring Boot自动配置(auto-configuration)尝试根据你添加的jar依赖自动配置你的Spring应用。例如,如果你的classpath下

存在 HSQLDB ,并且你没有手动配置任何数据库连接beans,那么我们将自动配置一个内存型(in-memory)数据库。

你可以通过将 @EnableAutoConfiguration 或 @SpringBootApplication 注解添加到一个 @Configuration 类上来选择自动配置。

注:你只需要添加一个 @EnableAutoConfiguration 注解。我们建议你将它添加到主 @Configuration 类上

Spring Beans和依赖注入

你可以自由地使用任何标准的Spring框架技术去定义beans和它们注入的依赖。简单起见,我们经常使用 @ComponentScan 注解 。

搜索beans,并结合 @Autowired 构造器注入。

如果使用上面建议的结构组织代码(将应用类放到根包下),你可以添加 @ComponentScan 注解而不需要任何参数。你的所有 应用程序组件( @Component , @Service , @Repository , @Controller 等)将被自动注册为Spring Beans。

下面是一个 @Service Bean的示例,它使用构建器注入获取一个需要的 RiskAssessor bean。

972ea1f2a79b427aab258f2e8ebe5991

注:注意如何使用构建器注入来允许 riskAssessor 字段被标记为 final ,这意味着 riskAssessor 后续是不能改变的。

使用@SpringBootApplication注解

很多Spring Boot开发者总是使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 注解他们的main类。由于这些

注解被如此频繁地一块使用(特别是你遵循以上最佳实践时),Spring Boot提供一个方便的 @SpringBootApplication 选择。

该 @SpringBootApplication 注解等价于以默认属性使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 。

bb9caba00fd1416a9aea325679cc1e3c

运行应用程序

将应用打包成jar并使用一个内嵌HTTP服务器的一个最大好处是,你可以像其他方式那样运行你的应用程序。调试Spring Boot应用也很简单;你不需要任何特殊IDE或扩展。

注:本章节只覆盖基于jar的打包,如果选择将应用打包成war文件,你最好参考一下服务器和IDE文档。

作为一个打包后的应用运行

c6234467d7634725aa9b014c388a7602

使用Maven插件运行

ff83071bbad24019b3ec49f45ce26422

使用Gradle插件运行

c3c1a93657cb4257aefa2ad448f0ffc3

热交换

由于Spring Boot应用程序只是普通的Java应用,那JVM热交换(hot-swapping)应该能出色的工作。JVM热交换在它能替换 。

的字节码上有些限制,更全面的解决方案可以使用Spring Loaded项目或JRebel。

打包用于生产的应用程序 。

可执行jars可用于生产部署。由于它们是自包含的,非常适合基于云的部署。关于其他“生产准备”的特性,比如健康监控,审 计和指标REST,或JMX端点,可以考虑添加 spring-boot-actuator 。具体参考Part V, “Spring Boot Actuator: Productionready features”。

除了Spring Boot的使用方式外还有Spring Boot特性、执行器、CLI、需要了解的可以私信我.

Spring Boot特性举个例子

开发Wed应用

Spring Boot非常适合开发web应用程序。你可以使用内嵌的Tomcat,Jetty或Undertow轻轻松松地创建一个HTTP服务器。大 多数的web应用都使用spring-boot-starter-web模块进行快速搭建和运行。

Spring Web MVC框架 Spring Web MVC框架(通常简称为"Spring MVC")是一个富"模型,视图,控制器"的web框架。 Spring MVC允许你创建特

定的@Controller或@RestController beans来处理传入的HTTP请求。 使用@RequestMapping注解可以将控制器中的方法映 射到相应的HTTP请求。

示例:

2b37ea18cfec4932b2c6a291f5395f88

HttpMessageConverters

Spring MVC使用HttpMessageConverter接口转换HTTP请求和响应。合理的缺省值被包含的恰到好处(out of the box),例 如对象可以自动转换为JSON(使用Jackson库)或XML(如果Jackson XML扩展可用则使用它,否则使用JAXB)。字符串 默认使用UTF-8编码。

如果需要添加或自定义转换器,你可以使用Spring Boot的HttpMessageConverters类:

bd1d4f358b044724a3dcef6a7d346d7f

需要这份Spring Bootpdf文档的朋友们转发收藏+关注私信“资料”立即获取

dba95d5c079c4f23a28c29b7382e97bc
cf79d6c658434c8d8ea5a7f36c6b27a6
7685f89984f744d3948363724db16cd4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346548.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6 redis 编译失败_Centos7.8环境搭建Redis主从复制和哨兵模式

本节我们搭建Redis主从复制和哨兵模式集群,集群的好处是把数据分散不不同的服务器上,解决网站中的很多高并发,高负载等问题,很好的提高网站的性能,也能解决mysql的数据读写问题,所以我们搭建集群非常有必要…

springboot异步注解_Spring Boot 2 :Spring Boot 中的响应式编程和 WebFlux 入门

【小宅按】Spring 5.0 中发布了重量级组件 Webflux,拉起了响应式编程的规模使用序幕。WebFlux 使用的场景是异步非阻塞的,使用 Webflux 作为系统解决方案,在大多数场景下可以提高系统吞吐量。Spring Boot 2.0 是基于 Spring5 构建而成&#x…

结尾的单词_22个以“ez”结尾的西语单词,你掌握了吗?

22 palabras que terminan en -ez22个以“-ez”结尾的西语单词ntido → nitidez 清澈,透明lcido → lucidez 光亮;清楚plido → palidez 苍白;暗淡rpido → rapidez 迅速cido → acidez 酸性estrecho → estrechez 狭窄esbelto → esb…

python xlwt xlrd模块详解_python操作excel之xlrd、xlwt模块详解

python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。 可从这里下载https://pypi.python.org/pypi。下面分别记录python读和写excel. python读excel——xlrd 这个过程有几个比较麻烦的问题,比如读取日期、读合并单…

python应届生找工作在深圳_应届毕业程序员找工作,企业最看重你们这些地方

这篇文章来谈一下应届生找工作的问题,最近有很多在校大学生跟我咨询很多企业很多工作要求有工作经验,那这样没工作经验的人都去哪学经验,要求工作经验真的有必要吗?应届生毕业找工作,一直有一个困惑是什么,…

PHP密码问题陈婷代码_PHP实现登录注册

一、首先实现一个PHP的简单登录注册的话 我们要简单的与后端定义一下接口和传输数据的方式 并且我们要有一个phpStudy服务器。第一步:当我们点击注册按钮的时候数据库要接收到客户端请求的数据 第二步:接收到数据以后服务器要处理数据:1.确定…

在Spring Boot中使用Vaadin的简介

介绍 Vaadin的工作方式依赖于服务器端渲染,因此可以自然地集成到诸如Spring之类的框架中。 Vaadin的Spring集成已经存在了一段时间,并且提供了用于在Spring容器中配置和管理Vaadin的工具,如果您希望将Vaadin与Spring Boot结合使用&#xff0c…

excel转las文件_这3种Word、Excel格式不变的互转方法,实在太好用了

日常工作中用Word写总结、写报告,写分析,一定离不开数据支持。但在制作的过程中你一定碰到过这些问题:Excel里做的表格、图表,一复制到word就变的乱七八糟!那么,有没有什么好的方法,即省时&…

stm32编码器正反转计数程序_光电编码器接线图分析

编码器(encoder)是将信号(如比特流)或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。光电编码器如果按信号原理来分类的话,可以分为增量型编码器和绝对型编码器。旋转编码器是一种光电式旋转测量装置,它将被测的角位移直接转换成数字信号…

jieba库词频统计_如何用python对《三国演义》、《红楼梦》等名著开展词云分析及字频统计、出场统计等工作。...

以下以《红楼梦》为例进行设计。在制作词云图及统计之前,需要下载python的几个库,wordcloud、jieba以及imageio等,我的操作系统为Windows10,IDE环境为idle,下载方式就直接搜索cmd,打开命令提示符窗口&#…

数学史思维导图_【学科活动】思维导图展风采,数学文化提素养——庆云县第四中学(北校区)四年级数学组活动小记...

思维无限 导我所想思维的火花跨越时空,照亮昨天、今天和明天。人类从茹毛饮血、采集狩猎到今天足不出户购遍全球,人工智能、大数据信息处理融入每个人的生活。这其中,最大的改变就是思维方式的改变。——题记思维导图又叫心智导图&#xff0c…

k2677场效应管参数引脚_共射极放大电路,场效应管放大电路,运算放大电路

电子技术、无线电维修及SMT电子制造工艺技术绝不是一门容易学好、短时间内就能够掌握的学科。这门学科所涉及的方方面面很多,各方面又相互联系,作为初学者,首先要在整体上了解、初步掌握它。无论是无线电爱好者还是维修技术人员,你…

加载类_JVM类加载详解

类的加载器概述类加载器是JVM执行类加载机制的前提。ClassLoader的作用:ClassLoader是Java的核心组件,所有的Class都是由ClassLoader进行加载的,ClassLoader负责通过各种方式将Class信息的二进制数据流读入JVM内部,转换为一个与目…

group by用法多个字段_select的用法

select的用法 --每个员工的所有信息 select * from emp; --每个人的部门编号,姓名,薪水 select empno, ename, sal from emp; --每个人的年薪 select ename, sal*12 from emp; --计算2*3的值 select 2*3 from emp; --计算2*3的值(dual) select 2*3 from …

计算机考试打字小作文,打字练习作文(通用5篇)

打字练习作文(通用5篇)导语:随着计算机在人们的生活中普及,敲键盘打字的速度就变成了人们努力的方向。下面是小编为大家整理的打字练习作文(通用5篇),欢迎阅读,希望大家能够喜欢。打字练习作文 篇1今天过得有些无聊,爸…

eclipse创建pojo_使用Eclipse Hibernate插件逐步为POJO域Java类和hbm自动生成代码

eclipse创建pojo概述: 在本教程中,我们将使用Eclipse Hibernate工具自动生成域对象和相应的hbm xml文件。 如果您正在处理大型或中型项目,并且开始时有超过5个以上的表,那么您可能会发现此插件是自动生成映射域对象java文件和相应…

c语言中x的n次方怎么表示_线性代数的本质及其在AI中的应用

线性代数是 AI 专家必须掌握的知识,这已不再是个秘密。如果不掌握应用数学这个领域,你永远就只能是「门外汉」。当然,学习线性代数道阻且长。数学,尤其是线性代数常与枯燥、复杂和毫无意义的事物联系起来。不过你还可以另辟蹊径。…

解码base64_linux C++ Base64编解码

Base64的由来目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。在做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后再进行签名或加密,之后再进行(或再次Base64)传输。那么&#xf…

java的for循环取出数据只是拿到最后一个_新兴大数据分析榆中百合

新兴大数据分析榆中百合大数据流程从流程角度上看,整个大数据处理可分成4个主要步骤。处理流程图分为三层(数据采集层,数据存储与计算处理层,数据可视化):表2-1 系统环境系统版本Windows 10专业版(建议)LinuxCentOS 6.8 or CentO…

c++冒泡排序代码_【开源推荐】数据结构和算法必知必会的50个代码实现

最近GitHub上发现了个非常不错的项目,目前star 4000,项目主要讲数据结构和算法,有多种语言 50个代码实现。实现语言有c,c#,go,java,javascript,object-c,python&#xff…