Windows 10家庭中文版,java version "1.8.0_152",

Eclipse Oxygen.1a Release (4.7.1a),Spring Tools 3 Add-On 3.9.5 (aka Spring Tool Suite 3) RELEASE

参考链接:

用Spring Boot颠覆Java应用开发(https://www.cnblogs.com/aishangJava/p/5971288.html),posted on 2016-10-17 21:12 工程师搁浅

说明,本文没有啥技术含量,只是方便自己第一时间认识Spring Boot的开发方式。

使用Eclipse+STS开发了第一个Spring Boot项目,主要步骤如下:

1.使用STS建立一个需要Web项目;

2.编写类HelloWorldRestController并提供两个链接;

全程花费一两分钟,很easy,和之前自己开发Flask应用(Web)一样Easy。

详细步骤如下:

-新建Spring Starter Project

安装STS后才有的选项。

-自己的项目信息。默认是Maven项目,可以选Gradle——俺没用过。

-我的目的是开发Web项目,因此,这里选择web,其实,有很多选择,看自己项目的需要。

-下面的看不太懂,就这样吧。

-点击Finish按钮,开始建立工程,可是,需要等待一段时间,Eclipse或STS有一些工作需要准备。可以看Eclipse右下角进度条,双击后可以看到更多信息。

-项目建立成功,结果如下图。其中,src/main/java下存在一个Demo2Application.java文件,本工程中 不需要修改。

-查看pom.xml文件,已经依赖了 spring-boot-starter-web。

-按照参考链接的代码,编写我们的Controller,如下。

建立一个HelloWorldRestController类,建立两个函数,添加相应的标记即可。

-代码写完了,运行项目,如下图所示。

-调试信息显示embedded.tomcat已经在8080端口启动了——占用了的话会报错 和 提供解决方案。

-手动测试

-正常

-正常,因为没有设置这个链接

-正常

--------更进一步--------

下面,介绍属性文件的使用,以更改 嵌入式Web服务器的默认端口为例:8080 改为 8081

在工程的/src/main/resources包下添加application.properties文件(还没仔细看官文,但添加在这里是对的,之前的尝试是添加到/src/main/java下,但不起作用)。

在文件中添加下面这句:

server.port = 8081

然后,重启Spring Boot应用,启动后发现,嵌入式Web服务器的端口已经更改为 8081 了。

main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8081 (http) with context path ''

测试:

那么,为何我知道这里更改端口的属性是 server.port呢?因为我参考了下面的链接:

Spring Boot的附录:附录A. 常见应用属性(https://www.breakyizhan.com/springboot/3489.html)

--------更进一步--------

Spring Boot中内嵌了3中Web服务器,默认是Tomcat,还有Jetty、Undertow。

3个嵌入式Web服务器怎么选?我也不知道,需要dig。

这里我介绍使用Jetty而不是Tomcat。

参考链接:

https://www.breakyizhan.com/springboot/3473.html (其中的 75.11 使用Jetty替代Tomcat)

按照参考链接中的pom.xml修改后,运行Spring Boot应用,可是,很久程序都没有跑起来。打开Console发现下图:

等待一段时间后,出现下面的信息:没有发现端口 8081 的字样,启动失败。

查看Problems发现存在两个错误:

第一个错误详情如下:

Could not transfer artifact javax.websocket:javax.websocket-api:jar:1.0 from/to nexus-aliyun 
(http://maven.aliyun.com/nexus/content/groups/public): D:\ws\apache-maven-3.5.4\repository\javax\websocket\javax.websocket-api
\1.0\aether-f185bc1c-81b0-4388-8ee5-2bfcf6448fda-javax.websocket-api-1.0.jar-in-progress (系统找不到指定的文件。) org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact javax.websocket:javax.websocket-api:jar:1.0
from/to nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public): D:\ws\apache-maven-3.5.4\repository\javax\websocket\
javax.websocket-api\1.0\aether-f185bc1c-81b0-4388-8ee5-2bfcf6448fda-javax.websocket-api-1.0.jar-in-progress (系统找不到指定的文件。)

什么意思呢?Could not transfer...

检查目录中的文件:

文件中有连个*-in-process文件,可是,和错误提示中说的不一致。

为什么会这样呢?

只有求助网友中的先行者了。

网络上没有找到类似解答,然后,想起了在项目上执行 Maven->Update Prject ,那么,试试吧!

1.删除Maven仓库下的websocket目录——需要先关掉Eclipse;

2.重启Eclipse,启动后,pom.xml文件中的问题还是存在;

3.检查新的websocket目录,已经建立,并且在目录websocket\javax.websocket-api\1.0没有以 -in-process 结尾的文件了。

4.在项目上执行Maven-Update Project,执行成功,pom.xml文件中的报错消失了。

5.执行项目,输出如下——看起来是没有达到预期要求的,Jetty嵌入式服务器没有运行起来?

  .   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.6.RELEASE) 2018-11-04 12:58:36.491 INFO 12360 --- [ main] com.example.demo.Demo2Application :
Starting Demo2Application on DESKTOP-F6FLB0T with PID 12360 (D:\eclipse\workspace\demo-2\target\classes
started by log in D:\eclipse\workspace\demo-2)
2018-11-04 12:58:36.494 INFO 12360 --- [ main] com.example.demo.Demo2Application :
No active profile set, falling back to default profiles: default
2018-11-04 12:58:36.530 INFO 12360 --- [ main] s.c.a.AnnotationConfigApplicationContext :
Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@6646153: startup
date [Sun Nov 04 12:58:36 CST 2018]; root of context hierarchy
2018-11-04 12:58:37.233 INFO 12360 --- [ main] o.s.j.e.a.AnnotationMBeanExporter :
Registering beans for JMX exposure on startup
2018-11-04 12:58:37.249 INFO 12360 --- [ main] com.example.demo.Demo2Application :
Started Demo2Application in 0.974 seconds (JVM running for 1.701)
2018-11-04 12:58:37.252 INFO 12360 --- [ Thread-2] s.c.a.AnnotationConfigApplicationContext :
Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@6646153: startup date
[Sun Nov 04 12:58:36 CST 2018]; root of context hierarchy
2018-11-04 12:58:37.255 INFO 12360 --- [ Thread-2] o.s.j.e.a.AnnotationMBeanExporter :
Unregistering JMX-exposed beans on shutdown

不明白、不明白,到底Jetty有没有运行起来呢?

下面的参考链接中,也是和我一样配置的pom.xml啊,可为何TA的启动了,而我的却没有呢?

https://blog.csdn.net/github_35169934/article/details/78573971

看了几篇博文,都是这么做的啊,修改下pom.xml即可,可到我这里居然就不行了!我要怨谁呢?哎

对比了两份pom.xml文件,发现使用的spring boot版本不一样:上面链接中的是1.5.8,而我现在用的是2.0.6。

为什么啊?

下面的 链接中的代码 居然在我的project中不能运行:

https://blog.csdn.net/Revivedsun/article/details/78217760

找不到其中的 JettyEmbeddedServletContainerFactory,真是奇怪!

13:33 怎么办呢?暂时到这里,等会儿继续,,本来一个很简单的问题,为何又要浪费俺这么多精时啊!欢迎大家不吝赐教!

1418 问题解决了,和Maven仓库有关系。

重新建立了一个Maven仓库——空文件夹,然后,重启Eclipse,再执行Maven -> Update Project,再执行程序,成功运行了。

真实扯啊!浪费好多时间!要赶快试试Gradle,或许没有这个问题呢?或许也有,

更多参考链接:

1.官文 Spring Boot Reference Guide(https://docs.spring.io/spring-boot/docs/2.0.6.RELEASE/reference/htmlsingle/)

里面有更详细信息。

后记

刚刚开始,继续在这个项目上折腾吧!添加更多的功能,访问SQL、NOSQL数据库,使用缓存、使用消息队列、其它。

就是Maven用起来有些扯!一不小心就几个小时没了,还浪费流量——新的空白Maven仓库有32MB存储了。

https://docs.spring.io/spring-boot/docs/2.0.6.RELEASE/reference/htmlsingle/

第一个Spring Boot程序的更多相关文章

  1. 第一章 第一个spring boot程序(转载)

    第一章 第一个spring boot程序 本编博客转发自:http://www.cnblogs.com/java-zhao/p/5324185.html   环境: jdk:1.8.0_73 mave ...

  2. 我的第一个spring boot程序(spring boot 学习笔记之二)

    第一个spring boot程序 写在前面:鉴于spring注解以及springMVC的配置有大量细节和知识点,在学习理解之后,我们将直接进入spring boot的学习,在后续学习中用到注解及其他相 ...

  3. Spring Boot从入门到精通(一)搭建第一个Spring Boot程序

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过 ...

  4. 第一个Spring Boot程序启动报错了

    创建完成第一个Spring Boot项目后,准备运行,尝一下胜利的果实. 启动日志如下 . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ...

  5. 【第一章】 第一个spring boot程序

    环境: jdk:1.8.0_73 maven:3.3.9 spring-boot:1.2.5.RELEASE(在pom.xml中指定了) 注意:关于spring-boot的支持, 最少使用jdk7(j ...

  6. 第一章 第一个spring boot程序

    环境: jdk:1.8.0_73 maven:3.3.9 spring-boot:1.2.5.RELEASE(在pom.xml中指定了) 注意:关于spring-boot的支持, 最少使用jdk7(j ...

  7. 第一个Spring Boot程序启动报错了(番外篇)

    Spring Boot内嵌了一个容器,我可以不用吗?我能不能用外部的容器呢? 当然是可以的! 然后,下面代码在pom文件中一定要有哦! <dependency> <groupId&g ...

  8. Spring Boot学习——第一个Spring Boot程序

    依照下面的步骤创建项目: 点击 Next 项目介绍: Application.java中的主要代码: @SpringBootApplication public class ReaderApplica ...

  9. 第一个spring boot 程序

    安装.运行.预览省略 错误1:8080端口被IIS占用,关闭它 Description: The Tomcat connector configured to listen on port 8080 ...

随机推荐

  1. 安装 scrapy 报错 error: Microsoft Visual C++ 14.0 is required

    问题描述 使用 pip install scrapy 安装 scrapy 时出现以下错误: error: Microsoft Visual C++ 14.0 is required 错误提示中给出了一 ...

  2. 多行文本文本输入框 textarea 可点击任意地方编辑的问题

    遇到了一个问题: textarea可以点击任意地方编辑 原因: textarea中间我换行了 改成: 就正常了.

  3. 2范数和F范数的区别

    2范数和F范数是不同的. 2范数表示矩阵或向量的最大奇异值,max⁡(svd(X)) 而 F范数表示矩阵所有元素平方和的开方根 sqrt(∑_(x_(i,j∈X))▒x_(i,j)^2 )

  4. Hadoop集群-HDFS集群中大数据运维常用的命令总结

    Hadoop集群-HDFS集群中大数据运维常用的命令总结 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客会简单涉及到滚动编辑,融合镜像文件,目录的空间配额等运维操作简介.话 ...

  5. Python基础【day03】:入门知识拾遗(八)

    本节内容 1.作用域 2.三元运算 3.进制 一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1:     name = 'wupeiq ...

  6. SQL记录-小表join大表查询例子

  7. MySQL日期时间格式化参数

    MySQL中常常会用到对日期的格式化,比如按某时间格式计算间隔,按某时间格式统计信息等等,所以整理了一下日期格式化的参数,可以根据自己的需求进行组合使用.使用例子如下: (1)SELECT DATE_ ...

  8. SpringJMS解析--监听器

    消息监听器容器是一个用于查看JMS目标等待消息到达的特殊bean,一旦消息到达它就可以获取到消息,并通过调用onMessage()方法将消息传递给一个MessageListener实现.Spring中 ...

  9. 08-DML(插入、更新、删除)

    1. 插入 (1). 插入完整数据记录 (2). 插入数据记录的一部分 (3). 插入多条记录(MySQL特有的) INSERT INTO table_name (column1,column2,co ...

  10. iOS safari 苹果手机如何阻止页面弹性“橡皮筋效果”?

    苹果上这个上下弹的效果对于有固定导航的页面,体验很不好 知乎上搜到一个并不是完美方案:https://www.zhihu.com/question/22256539 完美方案是有个国外插件叫:prev ...