Spring Boot –适合您的靴子!

您需要一点弹簧吗? 厌倦了所有繁琐的Web服务器并部署WAR文件? 好吧,你很幸运。 Spring Boot对构建可用于生产的Spring应用程序持坚定态度。 Spring Boot倾向于使用约定而非配置,它旨在使您尽快启动并运行。

在此博客中,我将引导您逐步完成如何使Spring Boot在您的计算机上运行的过程。

只是穿上并系好鞋带……

Spring Boot使创建“ Spring”的独立,生产级基于Spring的应用程序变得容易。 由于它从Spring平台和第三方库的观点出发,因此您可以大惊小怪地开始工作。 大多数Spring Boot应用程序只需要很少的Spring配置。

这些靴子是为走路准备的……也许正在跑步

因此,Spring Boot的最大优点是能够在极短的时间内启动并运行。 您不必为此安装Web服务器,例如JBoss,Websphere甚至是Tomcat。 您需要做的就是拉入适当的库,进行批注并解雇。 如果您打算做很多Spring Boot项目,我强烈建议您使用可用的Spring Tool Suite。 它具有一些使Boot项目真正易于管理的强大功能。

您当然可以在Maven或Gradle之间进行选择,以管理依赖关系和构建。 我的示例将在Maven中进行,因为这是我所熟悉的。 这与您的配置首选项有关。

多种风格可供选择

使Spring Boot出色的原因之一是,它可以与其他Spring产品一起很好地工作。 哇,去图吗? 您可以使用Spring MVC,Jetty或Thymeleaf,只需将它们添加到依赖项中,然后Spring Boot自动将它们添加到其中。

天天穿靴子

Spring Boot希望为您简化事情。 您可以用它来做很多事情。 以下是一些要点。

  • 通过Spring Boot,您可以将应用程序打包为独立的JAR文件,并嵌入完整的Tomcat服务器
  • Spring Boot使您仍然可以将应用程序打包为WAR。
  • 配置基于类路径中的内容(路径中的MySQL DB,它将为您设置)
  • 它具有默认设置(因此您不必配置它们)
  • 通过添加到类路径可以轻松覆盖(添加H2依赖关系并将其切换)
  • 让我们的新开发者着急学习绳索,并在以后学习更多时进行更改。

婴儿靴

但是请记住,该博客的目的只是让您熟悉如何在计算机上运行Spring Boot。 这将非常简单明了。 目标是让您入门。 我们不打算在此处编写新的Uber应用程序或其他代码。 宝贝踩乡亲! 我们只是想让您的脚温暖。 我们都知道那些教程会向我们扔很多东西,只是掩盖一切。 不在这里。

因此,入门最简单的方法是从Spring本身中提取教程代码。 这是一个很好的入门点。 无需将整个Spring库交给您就可以查看正在发生的事情,这对您来说是个好习惯。

克隆靴子…注意目标!

首先,让我们克隆在此处找到的Spring示例。

git clone https://github.com/spring-guides/gs-spring-boot.git

我们不会进入在IDE中进行设置的步骤,因为每个人都有自己的偏好。

施工靴

让我们分解一下。 这些注释是关于什么的?

@SpringBootApplication是一个方便注释,它添加了以下所有内容:

  • @Configuration将类标记为应用程序上下文的Bean定义的源。
  • @EnableAutoConfiguration告诉Spring Boot根据类路径设置,其他bean和各种属性设置开始添加bean。
  • 通常,您将为Spring MVC应用程序添加@EnableWebMvc ,但是当Spring Boot在类路径上看到spring-webmvc时,它将自动添加它。 这会将应用程序标记为Web应用程序,并激活诸如设置DispatcherServlet类的关键行为。
  • @ComponentScan告诉Spring在hello包中寻找其他组件,配置和服务,从而允许它找到控制器。

哇,我一直在寻找新房时喜欢优质的内装! 但是这些闪亮的新物品背后究竟发生了什么?

main()方法调用Spring Boot的SpringApplication.run()方法来启动。

我们是否提到(或您注意到)您不必弄乱XML? 多么可观的奖金! 没有更多的web.xml文件废话了。 不再想知道我是否在文件中放置了正确的标签,并且想知道那条无法读取的错误消息告诉您什么不再是什么问题了。 这是100%纯Java。 无需配置或管道。 他们为您做了。 他们真好!

设置好并准备开始编辑后,让我们快速看一下Application.java文件。 在这里,您将找到可运行的main类。 它具有@SpringBootApplication的注释。 这是使该应用程序成为启动应用程序的关键注释。

package hello;import java.util.Arrays;import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}@Beanpublic CommandLineRunner commandLineRunner(ApplicationContext ctx) {return args -> {System.out.println("Let's inspect the beans provided by Spring Boot:");String[] beanNames = ctx.getBeanDefinitionNames();Arrays.sort(beanNames);for (String beanName : beanNames) {System.out.println(beanName);}};}}

现在运行它! 如果您使用的是STS套件(并已正确构建),则将在启动仪表板中看到它。 对于其他所有人,请在IDE中右键单击并以“ Run As => Java Application”运行,或转到您喜欢的命令行工具。 使用以下命令。

Maven:

mvn package && java -jar target/gs-spring-boot-0.1.0.jar

摇篮:

./gradlew build && java -jar build/libs/gs-spring-boot-0.1.0.jar

输出将显示嵌入式服务器的正常Spring启动,然后它将遍历所有bean并为您写出来!

你做到了! 您系好第一双Spring Boot。

展示靴子

为了进行销售或只是吸引眼球,此示例抛出了标有@BeanCommandLineRunner方法,该方法在启动时运行。 它检索由您的应用程序创建或由于Spring Boot而自动添加的所有bean。 它对它们进行排序并打印出来。 您可以放入其他启动信息,也可以做其他一些工作。

在线引导

在购买合适的靴子时,我们希望能搭配我们最喜欢的牛仔裤或女士的漂亮裙子搭配漂亮的裙子,对吗? Well Boot提供了一种简单的方法来将您的靴子推向世界,供其他人查看。 好吧,我们需要雇用一个Controller来做到这一点。 多么方便:我们下载的Spring代码已经为我们准备好了。

package hello;import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;@RestController
public class HelloController {@RequestMapping("/")public String index() {return "Greetings from Spring Boot!";}}

这里最重要的两件事是您看到的@RestController@RequestMapping批注。

@RestController是一个下意识的消息,它是午睡时间。 Errr,抱歉,我正在困倦。 不,这意味着我们有一个RESTful控制器在等待,监视,监听应用程序对其的调用。

@RequestMapping是调用特定方法的URL名称。 因此,在给定示例的情况下,它是应用程序的“索引”。 这里的示例只是返回文本。 这是很酷的事情; 我们可以在这里退回几乎所有您想退回的东西。

JSON在Argo上有不错的靴子吗?

最后,我认为大多数Spring Boot冒险者现在正在做的就是将其用作其应用程序的端点。 关于如何完成此操作,有很多不同的选择。 通过JSON提供的数据或XML解决方案。 我们现在只关注一个。 Jackson是一个很好的轻量级工具,用于完成对调用场景的JSON输出。

默认情况下,在Spring Boot的类路径中可以方便地找到Jackson。 自己检查一下:

mvn dependency:tree`

要么

./gradlew dependencies

让我们已经为这些靴子添加了一些赞誉吧! 在源代码中的任何位置添加一个新类。 只是一个POJO。

public class Greeting {private final long id;private final String content;public Greeting(long id, String content) {this.id = id;this.content = content;}public long getId() {return id;}public String getContent() {return content;}}

现在,回到你的 控制器并将其粘贴到:

private static final String template = "Ahoy, %s!";
private final AtomicLong counter = new AtomicLong();@RequestMapping(method=RequestMethod.GET)public @ResponseBody Greeting sayHello(@RequestParam(value="name", required=false, defaultValue="Argonaut") String name) {return new Greeting(counter.incrementAndGet(), String.format(template, name));}

现在重新启动您的启动应用程序。 返回浏览器,而不是/转到hello-world 。 您应该会看到一些很棒的JSON输出。 如果您这样做了,那么您就可以在Spring Boot和Jackson中创建端点了。

Argo需要另一个港口

由于许多人正在编写端点并且有多个站点在运行,因此您可能需要将默认端口8080更改为其他端口。 因此,最简单,最直接的方法是将application.properties文件添加到src/main/resources

所有需要的是这样的:

server.port = 8090

十分简单。 称重锚并起航!

新兵训练营总结

因此,您可以看到使用Spring Boot进行操作有多么容易。 我们不必在配置方面做很多事情就能真正着急地启动和运行。 我们避免了可怕的XML文件,只添加了一个小的属性文件。 内置的堆栈非常好。 对于那些希望为我们的闪亮前端提供端点的人,Jackson提供了一种易于使用的JSON转换。

再次,Spring似乎找到了一种使开发人员的生活更简单的方法。 该博客故意保持简单。 我们的新靴子有许多不同的冒险途径。 无论您是想利用微服务,构建传统的整体架构,还是要面对其他麻烦,您都可以看到Spring Boot如何使您快速着手。

翻译自: https://www.javacodegeeks.com/2017/01/spring-boot-right-boot.html

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

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

相关文章

OpenCV 像素的读取与操作

像素读取和操作 1. 利用cv::Mat的at函数,直接访问具体地址 void get_setImagePixel(char *imagePath, int x, int y){// Mat image imread(imagePath , 0);Mat image imread(imagePath, 1);//得宽高int w image.cols;int h image.rows;int channels image.c…

[http]HTTP状态码含义

HTTP状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。 HTTP状态码的英文为HTTP …

不等式约束的拉格朗日乘数法_Abaqus血管支架仿真|接触约束执行方式

根据支架的建模基础、几何和网格划分、单元选择、材料和截面属性、分析步设置、载荷接触和约束、收敛调整,以及后处理、参数优化等内容。接着Abaqus血管支架仿真|建模基础、Abaqus血管支架仿真|几何和网格划分、Abaqus血管支架仿真|单元选择、Abaqus血管支架仿真|材…

OpenCV形态学运算

1.OpenCV形态学运算morphologyEx(开运算 、闭运算 、形态学梯度 、顶帽运算 、黑帽运算 、腐蚀运算 、膨胀运算 、击中击不中运算) void cv::morphologyEx (InputArray src,OutputArray dst,int op,InputArray kernel,Point anchor Point(-1,-1),int …

python判断成绩等级_Python计算山东新高考选考科目卷面原始成绩为等级成绩

原标题:Python计算山东新高考选考科目卷面原始成绩为等级成绩图书详情:配套资源:用书教师可以免费获取教学大纲、教案、课件、源码、习题答案、课堂管理与考试系统。山东省新高考政策33中,考生必考科目有语文、数学、英语&#xf…

java web ee_Java EE 6 Web配置文件。 在云上。 简单。

java web eeJava SE还可以。 Java EE是邪恶的。 这就是我一直想的。 好吧,现在不再了。 让我分享我的经验。 几周前,我开始考虑将旧版spring hibernate tomcat应用程序移植到新平台上: SAP NetWeaver云 。 我知道您在极客那里的想法&…

帆软报表(finereport) 饼图联动

饼图联动:点击饼图1,饼图2和饼图3显示饼图1的关联数据,接着点击饼图2,饼图3显示饼图2的关联数据,点击上方清除级联,饼图则恢复默认展示状态 下面以上图示例效果为例,说明制作过程。 1.为每个饼图…

中值滤波medianBlur

C: void medianBlur(InputArray src, OutputArray dst, int ksize) 参数解释: . InputArray src: 输入图像,图像为1、3、4通道的图像,当模板尺寸为3或5时,图像深度只能为CV_8U、CV_16U、CV_32F中的一个,如而对于较大…

wxpython下载缓慢_我可以在wxPython的wx.grid.Grid中加速优化GridCellAttr的使用吗?

设置单元格属性将新GridCellAttr添加到GridCellAttrProvider名单。 随着列表的增长,查找单元格的特定属性(通过遍历列表和比较坐标)变得越来越慢。您可以尝试通过PyGridTableBase.SetAttr和GetAttr(例如使用字典)实现自己的加快步伐:编辑:更新…

特性和混入不是面向对象的

让我立刻说,我们将在这里讨论的功能是那些迫切需要进行放线手术的人带给面向对象编程的纯粹的毒药 ,就像David West在他的《 Objecting Thought》一书中所建议的那样。 这些功能具有不同的名称,但最常见的是traits和mixins 。 我很不明白&…

模板匹配matchTemplate

C: void matchTemplate(InputArray image, InputArray templ, OutputArray result, int method); image:输入图像。必须为8位或者32位的浮点型。 templ:用于搜索的模板图像。必须小于输入图像并且是一样的数据类型。 result:匹配…

pandas处理csv

import pandas as pd from pandas import Series,DataFrame 打开csv文件 deli pd.read_csv(../得力.csv) 转换为DataFrame数据类型 df DataFrame(datadeli) 更改列名 df.rename(columns{"title":"商品名称","price":"价格","pr…

php 随机在文章中添加锚文本_SEO站长布局锚文本时的7大注意事项

通过对什么是锚文本链接、锚文本作用的讲解,以及怎样布局网站站内锚文本的介绍。相信大家都有了比较清晰的认识,也会重视网站锚文本的建设。但是菜鸟菌还是不得不再啰嗦点,锚文本虽然好处大大的,在布局锚文本的时候还是注意以下几…

OpenCV rectangle

void rectangle(Mat& img, Point pt1,Point pt2,const Scalar& color, int thickness1, int lineType8, int shift0) img 图像. pt1 矩形的一个顶点。 pt2 矩形对角线上的另一个顶点 color 线条颜色 (RGB) 或亮度(灰度图像 )(grayscale image…

【Java】NIO中Selector的select方法源码分析

该篇博客的有些内容和在之前介绍过了,在这里再次涉及到的就不详细说了,如果有不理解请看【Java】NIO中Channel的注册源码分析, 【Java】NIO中Selector的创建源码分析 Selector的创建在Windows下默认生成WindowsSelectorImpl对象,那…

简单小程序代码_小程序该如何运营

小型程序升级有三种最重要的方法:1.借助微信附近小程序功能实现客户扩展大家可能都知道,微信平台具有附近小程序的功能。此功能使用户可以查看周围五公里范围内的所有小程序。正是由于这个原因,一旦商人完成了这个小程序并加入了附近的小程序…

在javafx中界面主题_最小的JavaFX演示文稿(在JavaFX中)

在javafx中界面主题如果您要进行有关JavaFX的演示,那么使用JavaFX本身进行演示非常方便。 这样,您无需离开演示文稿即可轻松显示示例。 这是一个非常简单的示例。 在NetBeans中,设置一个新的JavaFX项目“ New Project”->“ JavaFX”->…

OpenCV cvLine

cvLine 函数原型: void cvLine( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness1, int line_type8, int shift0 ); img 图像。pt1 线段的第一个端点。pt2 线段的第二个端点。color 线段的颜色。thickness 线段的粗细程度。line_type 线段…

lengthOfLongestSubstring

lengthOflongestSubstring 试例: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 /**** param {string} s* 无重复字符的最长子串*/ function lengthOfLongestSubstring(s) {if (typeof s ! s…

编译原理--词法分析C++

一、实验项目要求 1.实验目的 通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。 编制一个读单词过程,从输入的源程序中,识别出各个具有…