- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章springboot学习之构建简单项目搭建步骤详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
概述 。
相信对于java开发者而言,spring和springmvc两个框架一定不陌生,这两个框架需要我们手动配置的地方非常多,各种的xml文件,properties文件,构建一个项目还是挺复杂的,在这种情况下,springboot应运而生,他能够快速的构建spring项目,而且让项目正常运行起来的配置文件非常少,甚至只需要几个注解就可以运行整个项目.
总的说来,springboot项目可以打成jar包独立运行部署,因为它内嵌servlet容器,之前spring,springmvc需要的大量依赖,可以通过starter来帮助我们简化配置,当然还有其他好多优点,这里就不一一赘述,小伙伴们可以自行搜索解答.
简单项目构建 。
工具 。
eclipse maven 。
首先,我们新建一个maven项目,在eclipse左侧右击选择new----》other,选择新建maven project 。
输入group id,artifact id,点击完成 。
这样一个简单的项目架子就完成了,但是啥都没有,项目结构如下图所示:
下面我们就开始配置搭建springboot项目.
1.添加依赖 。
完整porm代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
<project xmlns=
"http://maven.apache.org/pom/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/xmlschema-instance"
xsi:schemalocation=
"http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelversion>
4.0
.
0
</modelversion>
<groupid>com.cfxmn.springboot</groupid>
<artifactid>springbootdemo</artifactid>
<version>
0.0
.
1
-snapshot</version>
<packaging>jar</packaging>
<!-- 通过继承spring-boot-starter-parent项目来获得一些合理的默认配置 -->
<parent>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-parent</artifactid>
<version>
1.5
.
6
.release</version>
</parent>
<properties>
<project.build.sourceencoding>utf-
8
</project.build.sourceencoding>
</properties>
<dependencies>
<!-- spring boot web 依赖 -->
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-web</artifactid>
</dependency>
<!-- spring boot test 依赖 -->
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-test</artifactid>
<scope>test</scope>
</dependency>
<!-- 使用lombok可以减少很多重复代码的书写。比如说getter/setter/tostring等方法的编写 -->
<dependency>
<groupid>org.projectlombok</groupid>
<artifactid>lombok</artifactid>
</dependency>
</dependencies>
</project>
|
下面我们新建一些包和添加项目的启动类,如下图所示:
其中,控制器democontroller的内容非常简单,内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
package
com.cfxmn.springboot.springbootdemo.controller;
import
org.springframework.web.bind.annotation.postmapping;
import
org.springframework.web.bind.annotation.restcontroller;
import
lombok.extern.slf4j.slf4j;
@restcontroller
@slf4j
public
class
democontroller {
@postmapping
(
"/demo"
)
public
void
demotest() {
// 这边简单起见,打印一下日志
log.info(
"success call"
);
}
}
|
可能有些同学对其中的几个注解有些疑问,我这边简单说明下, 。
1.restcontroller 。
这个注解其实就是@responsebody + @controller 。
2.postmapping 。
这个注解其实就是@requestmapping("xxxxxx", method=requestmethod.post) 。
这两个其实都是组合注解,简化使用 。
我们再来看看,项目的启动类springbootdemoapplication的内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
package
com.cfxmn.springboot.springbootdemo;
import
org.springframework.boot.springapplication;
import
org.springframework.boot.autoconfigure.springbootapplication;
@springbootapplication
public
class
springbootdemoapplication {
public
static
void
main(string[] args) {
springapplication.run(springbootdemoapplication.
class
, args);
}
}
|
是的,你没看错,只要运行这个main方法,就能启动这个spring项目,具体是怎么启动的容器,我们之后再分析,其实主要就是在注解springbootapplication上.
下面我们就来运行下,看下启动日志:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ |
'_ | '
_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: spring boot :: (v1.
5.6
.release)
2018
-
10
-
25
23
:
52
:
41.985
info
1700
--- [ main] c.c.s.s.springbootdemoapplication : starting springbootdemoapplication on desktop-kb78hjk with pid
1700
(e:\workspace\springbootdemo\target\classes started by gepengfa in e:\workspace\springbootdemo)
2018
-
10
-
25
23
:
52
:
41.990
info
1700
--- [ main] c.c.s.s.springbootdemoapplication : no active profile set, falling back to
default
profiles:
default
2018
-
10
-
25
23
:
52
:
42.088
info
1700
--- [ main] ationconfigembeddedwebapplicationcontext : refreshing org.springframework.boot.context.embedded.annotationconfigembeddedwebapplicationcontext
@7f416310
: startup date [thu oct
25
23
:
52
:
42
cst
2018
]; root of context hierarchy
2018
-
10
-
25
23
:
52
:
44.561
info
1700
--- [ main] s.b.c.e.t.tomcatembeddedservletcontainer : tomcat initialized with port(s):
8080
(http)
2018
-
10
-
25
23
:
52
:
44.584
info
1700
--- [ main] o.apache.catalina.core.standardservice : starting service [tomcat]
2018
-
10
-
25
23
:
52
:
44.588
info
1700
--- [ main] org.apache.catalina.core.standardengine : starting servlet engine: apache tomcat/
8.5
.
16
2018
-
10
-
25
23
:
52
:
44.813
info
1700
--- [ost-startstop-
1
] o.a.c.c.c.[tomcat].[localhost].[/] : initializing spring embedded webapplicationcontext
2018
-
10
-
25
23
:
52
:
44.813
info
1700
--- [ost-startstop-
1
] o.s.web.context.contextloader : root webapplicationcontext: initialization completed in
2733
ms
2018
-
10
-
25
23
:
52
:
45.074
info
1700
--- [ost-startstop-
1
] o.s.b.w.servlet.servletregistrationbean : mapping servlet:
'dispatcherservlet'
to [/]
2018
-
10
-
25
23
:
52
:
45.083
info
1700
--- [ost-startstop-
1
] o.s.b.w.servlet.filterregistrationbean : mapping filter:
'characterencodingfilter'
to: [
/*]
2018-10-25 23:52:45.083 info 1700 --- [ost-startstop-1] o.s.b.w.servlet.filterregistrationbean : mapping filter: 'hiddenhttpmethodfilter' to: [/*]
2018-10-25 23:52:45.083 info 1700 --- [ost-startstop-1] o.s.b.w.servlet.filterregistrationbean : mapping filter: 'httpputformcontentfilter' to: [/*]
2018-10-25 23:52:45.085 info 1700 --- [ost-startstop-1] o.s.b.w.servlet.filterregistrationbean : mapping filter: 'requestcontextfilter' to: [/*]
2018-10-25 23:52:45.582 info 1700 --- [ main] s.w.s.m.m.a.requestmappinghandleradapter : looking for @controlleradvice: org.springframework.boot.context.embedded.annotationconfigembeddedwebapplicationcontext@7f416310: startup date [thu oct 25 23:52:42 cst 2018]; root of context hierarchy
2018-10-25 23:52:45.705 info 1700 --- [ main] s.w.s.m.m.a.requestmappinghandlermapping : mapped "{[/demo],methods=[post]}" onto public void com.cfxmn.springboot.springbootdemo.controller.democontroller.demotest()
2018-10-25 23:52:45.710 info 1700 --- [ main] s.w.s.m.m.a.requestmappinghandlermapping : mapped "{[/error]}" onto public org.springframework.http.responseentity<java.util.map<java.lang.string, java.lang.object>> org.springframework.boot.autoconfigure.web.basicerrorcontroller.error(javax.servlet.http.httpservletrequest)
2018-10-25 23:52:45.711 info 1700 --- [ main] s.w.s.m.m.a.requestmappinghandlermapping : mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.modelandview org.springframework.boot.autoconfigure.web.basicerrorcontroller.errorhtml(javax.servlet.http.httpservletrequest,javax.servlet.http.httpservletresponse)
2018-10-25 23:52:45.759 info 1700 --- [ main] o.s.w.s.handler.simpleurlhandlermapping : mapped url path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.resourcehttprequesthandler]
2018-10-25 23:52:45.759 info 1700 --- [ main] o.s.w.s.handler.simpleurlhandlermapping : mapped url path [/**] onto handler of type [class org.springframework.web.servlet.resource.resourcehttprequesthandler]
2018-10-25 23:52:45.817 info 1700 --- [ main] o.s.w.s.handler.simpleurlhandlermapping : mapped url path [/**/
favicon.ico] onto handler of type [
class
org.springframework.web.servlet.resource.resourcehttprequesthandler]
2018
-
10
-
25
23
:
52
:
46.321
info
1700
--- [ main] o.s.j.e.a.annotationmbeanexporter : registering beans
for
jmx exposure on startup
2018
-
10
-
25
23
:
52
:
46.529
info
1700
--- [ main] s.b.c.e.t.tomcatembeddedservletcontainer : tomcat started on port(s):
8080
(http)
2018
-
10
-
25
23
:
52
:
46.599
info
1700
--- [ main] c.c.s.s.springbootdemoapplication : started springbootdemoapplication in
5.092
seconds (jvm running
for
5.764
)
|
从启动日志标黄的部分可以看出,项目启动成功了,访问端口默认是8080(这个端口是可以改动的) 。
下面我们通过postman请求下, 。
查看控制台 。
1
|
2018
-
10
-
25
23
:
59
:
26.385
info
1700
--- [nio-
8080
-exec-
2
] c.c.s.s.controller.democontroller : success call
|
说明调用成功.
到此,一个简单的springboot项目就构建完成了,但这只是一个空的架子,内容还可载丰富.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:http://www.cnblogs.com/xiaobaobei/p/9853712.html 。
最后此篇关于springboot学习之构建简单项目搭建步骤详解的文章就讲到这里了,如果你想了解更多关于springboot学习之构建简单项目搭建步骤详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我是在项目中使用 keras 的新手。我一直在我的模型中使用generator。 我真的很困惑我应该输入什么值 1) In fit_generator : steps_per_epoch & vali
假设我们有如下情况: A has to give $10 to B. B has to give $20 to C. C has to give $10 to D. 现在这种情况可以简化为: A lo
我正在尝试对特定列(在工作表“OA”中)进行相对引用,我需要在 110 的步骤中检索新工作表中的单元格内容 例如, =OA!$AB217 =OA!$AB327 =OA!$AB437 与其在每个单元格中
我的 PowerShell 控制台启动时间很慢(总是等待超过 5 秒),并且希望获得有关故障排除步骤的建议,以找出瓶颈可能在哪里? 我已经阅读了关于运行脚本的内容,-NoProfile防止模块等加载很
我在 NativeScript 应用程序中使用 slider 小部件,我想知道是否有步骤属性。在我的例子中,小部件代表金钱,我希望以 5 美元的增量滑动。 我查看了文档,但找不到任何对这种情况有帮助的
我在 NativeScript 应用程序中使用 slider 小部件,我想知道是否有步骤属性。在我的例子中,小部件代表金钱,我希望以 5 美元的增量滑动。 我查看了文档,但找不到任何对这种情况有帮助的
这是我的code : &n
为什么 (2) c.ERR(模棱两可)?第一个方法参数 - char ('a') 被扩展为 float => 匹配。 如果找到匹配项,是否无需继续执行第 2 步(装箱/拆箱)或第 3 步(尝试可变参数
我有一个函数,它处理一个包含 6100 个列表项的列表。当列表只有 300 个项目时,该代码可以正常工作。但是立即与 6100 崩溃。有没有一种方法可以遍历这 6100 个项目,一次说 30 个,然后
1.制作PHP安装程序的原理 其实PHP程序的安装原理无非就是将数据库结构和内容导入到相应的数据库中,从这个过程中重新配置连接数据库的参数和文件,为了保证不被别人恶意使用安装文件,当安装
我创建了一个类似于 primeNG page 的步骤组件我想把他放在一个 dynamic dialog 里面但在应用它之后,“第 1 步”和“第 2 步”不会呈现。 查看代码,我发现关键部分是我们打开
我在理解描述的 MixColumns 步骤时遇到问题 here . 我知道扩散,这一切都是有道理的,因为它指出每列都被视为多项式并乘以 GF(2^8) 的模。 但是..乘以GF(2 ^ 8)。尽管域仍
根据我对 TeamCity 工作原理的观察,我注意到在所有步骤执行完毕后评估构建失败条件。这很烦人,因为如果满足任何构建失败条件,我不能有一个不会执行的步骤。 我不是指常见的构建失败条件,例如“至少一
基于这篇试图在我的环境中测试管道代码的帖子。但它给出了以下错误消息。如何修复他的管道代码? ERROR: Unable to find project for artifact copy: test
我参与了一个项目,需要向我的一位同事提供生产数据的子集(日期范围),以进行故障排除。我想将经过清理的生产数据子集插入新的数据库表中我的同事可以访问。请提出实现此目标的最佳方法。 最佳答案 最简单的方法
我有这样的场景: 鉴于我去这个页面 当我输入 cucumber 时 然后我点击 然后我应该看到文字 我不应该看到这条线 如果我运行这个场景,它将执行所有 5 个步骤。但是我想跳过第4步(然后我应该看到
是否有任何功能可以避免 m 文件的绘图输出? 我的意思是我在文件的开头放置了一个函数(如 clc),然后所有绘图函数都被阻止。 最佳答案 您可以使用自己的(嵌套在您的函数内或同一目录中)重载内置绘图函
我是小 cucumber 语言的新手,这在我看来是非常基本的问题,但我找不到答案。 我知道可以在 Gherking 中编写多行步骤参数,如下所示: Given a blog post named "R
即使其中一个步骤失败,有没有办法继续执行 Cucumber Steps。在我当前的设置中,当一个步骤失败时, cucumber 会跳过剩余的步骤......我想知道是否有某种方法可以设置 cucumb
start-step-stop 码是一种数据压缩技术,用于压缩相对较小的数字。 该代码的工作原理如下:它具有三个参数,start、step 和 stop。 Start 确定用于计算前几个数字的位数。
我是一名优秀的程序员,十分优秀!