第一个Spring Boot程序
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程序的更多相关文章
- 第一章 第一个spring boot程序(转载)
第一章 第一个spring boot程序 本编博客转发自:http://www.cnblogs.com/java-zhao/p/5324185.html 环境: jdk:1.8.0_73 mave ...
- 我的第一个spring boot程序(spring boot 学习笔记之二)
第一个spring boot程序 写在前面:鉴于spring注解以及springMVC的配置有大量细节和知识点,在学习理解之后,我们将直接进入spring boot的学习,在后续学习中用到注解及其他相 ...
- Spring Boot从入门到精通(一)搭建第一个Spring Boot程序
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过 ...
- 第一个Spring Boot程序启动报错了
创建完成第一个Spring Boot项目后,准备运行,尝一下胜利的果实. 启动日志如下 . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ...
- 【第一章】 第一个spring boot程序
环境: jdk:1.8.0_73 maven:3.3.9 spring-boot:1.2.5.RELEASE(在pom.xml中指定了) 注意:关于spring-boot的支持, 最少使用jdk7(j ...
- 第一章 第一个spring boot程序
环境: jdk:1.8.0_73 maven:3.3.9 spring-boot:1.2.5.RELEASE(在pom.xml中指定了) 注意:关于spring-boot的支持, 最少使用jdk7(j ...
- 第一个Spring Boot程序启动报错了(番外篇)
Spring Boot内嵌了一个容器,我可以不用吗?我能不能用外部的容器呢? 当然是可以的! 然后,下面代码在pom文件中一定要有哦! <dependency> <groupId&g ...
- Spring Boot学习——第一个Spring Boot程序
依照下面的步骤创建项目: 点击 Next 项目介绍: Application.java中的主要代码: @SpringBootApplication public class ReaderApplica ...
- 第一个spring boot 程序
安装.运行.预览省略 错误1:8080端口被IIS占用,关闭它 Description: The Tomcat connector configured to listen on port 8080 ...
随机推荐
- 【CH5105】cookies 贪心+DP
通过邻项交换法可知,怨气值大的孩子分得的饼干数也应该多(否则交换之后得到的解更优). 观察目标函数的性质,可知目标函数本身是由孩子饼干数的相对大小得到,因此此题中关注的是相对大小. 状态设计:\(dp ...
- 二进制手动部署kubernetes 1.10.10
转载于:https://www.jevic.cn/2018/09/23/kuberentes-1.10.10/?tdsourcetag=s_pcqq_aiomsg#heapster 通读一遍在实际操作 ...
- 即将上线的Kafka服务器面临的一系列填坑笔记
即将上线的Kafka服务器面临的一系列填坑笔记 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Kafka日志报错:[error] k.m.j.KafkaJMX$ - Fai ...
- JavaSE学习总结(十五)—— Java反射与注解
一.静态语言与动态语言 静态类型语言:是指在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型,某些具有类型推导能力的现代语言可能能够部分减轻这个要求.强类型 动态 ...
- 使用Aspose.Cells生成Excel的线型图表
目的: 1.根据模板里面的excel数据信息,动态创建line chart 2.linechart 的样式改为灰色 3.以流的形式写到客户端,不管客户端是否装excel,都可以导出到到客户端 4.使用 ...
- css before after基本用法【转】
<HTML><HEAD> <meta http-equiv="content-Type"content="text/html;charset ...
- android studio 统一管理版本号配置
1.在android 的根目录新建一个versions.gradle 2.在这里面声明 各个第三方库的版本,写法有两种,第一种,写ext 扩展, 引用的时候, 第二种: 然后在project级的bui ...
- (原创 开源)AppWidge的使用—桌面便利贴
Android平台的一大特色就是支持桌面插件——AppWidget. 且不说,AppWidget是否会影响系统的流畅性,AppWidget确实是满足了用户个性化和快捷操作的需要. 常见的AppWidg ...
- 实现Servlet容器一
本文是阅读<深度解析Tomcat>的笔记. 源码:http://www.brainysoftware.com/source/9780975212806.zip├── src│ └── ...
- 首次使用Vue开发
1.首先在页面上添加如下的代码 var app = new Vue({ el: '#signupForm', data: { UserName: '', PWD: '' } }); 2.在下面添加ht ...