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. 【CH5105】cookies 贪心+DP

    通过邻项交换法可知,怨气值大的孩子分得的饼干数也应该多(否则交换之后得到的解更优). 观察目标函数的性质,可知目标函数本身是由孩子饼干数的相对大小得到,因此此题中关注的是相对大小. 状态设计:\(dp ...

  2. 二进制手动部署kubernetes 1.10.10

    转载于:https://www.jevic.cn/2018/09/23/kuberentes-1.10.10/?tdsourcetag=s_pcqq_aiomsg#heapster 通读一遍在实际操作 ...

  3. 即将上线的Kafka服务器面临的一系列填坑笔记

      即将上线的Kafka服务器面临的一系列填坑笔记 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Kafka日志报错:[error] k.m.j.KafkaJMX$ - Fai ...

  4. JavaSE学习总结(十五)—— Java反射与注解

    一.静态语言与动态语言 静态类型语言:是指在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型,某些具有类型推导能力的现代语言可能能够部分减轻这个要求.强类型 动态 ...

  5. 使用Aspose.Cells生成Excel的线型图表

    目的: 1.根据模板里面的excel数据信息,动态创建line chart 2.linechart 的样式改为灰色 3.以流的形式写到客户端,不管客户端是否装excel,都可以导出到到客户端 4.使用 ...

  6. css before after基本用法【转】

    <HTML><HEAD> <meta http-equiv="content-Type"content="text/html;charset ...

  7. android studio 统一管理版本号配置

    1.在android 的根目录新建一个versions.gradle 2.在这里面声明 各个第三方库的版本,写法有两种,第一种,写ext 扩展, 引用的时候, 第二种: 然后在project级的bui ...

  8. (原创 开源)AppWidge的使用—桌面便利贴

    Android平台的一大特色就是支持桌面插件——AppWidget. 且不说,AppWidget是否会影响系统的流畅性,AppWidget确实是满足了用户个性化和快捷操作的需要. 常见的AppWidg ...

  9. 实现Servlet容器一

    本文是阅读<深度解析Tomcat>的笔记. 源码:http://www.brainysoftware.com/source/9780975212806.zip├── src│   └── ...

  10. 首次使用Vue开发

    1.首先在页面上添加如下的代码 var app = new Vue({ el: '#signupForm', data: { UserName: '', PWD: '' } }); 2.在下面添加ht ...