SpringBoot学习笔记一:简单项目搭建

这是SpringBoot学习系列的第一个笔记。希望这是一个美好的开端,也希望后续本人能够完成整个SpringBoot框架的学习。这是初学者的学习笔记,操作过程尽量简单详细,大神请轻喷(狗头保命)。话不多说,下面记录以Spring Initializr来创建SpringBoot项目。

方式一:Spring Initializr

这是Spring官方提供的在线搭建SpringBoot项目的工具。

1.1.访问网站https://start.spring.io/

如下图所示:

start.spring.io

)

页面主要分为以下几个选项:项目类型、编程语言、Spring Boot版本号、项目描述信息、项目依赖;这里我们在依赖项先添加Spring Web依赖。

熟悉Maven项目的同学应该对这些配置不陌生,是的,搭建一个SpringBoot项目与搭建一个maven项目没有什么差别。

这里可以按照图中配置,然后点击Generate按钮生成并下载项目。

1.2.导入项目

解压下载的项目压缩包,使用IDEA 以maven项目形式导入,加载依赖后,项目结构如下:

初始化项目结构

其中,Demo1Application为项目启动类。

1.3.启动项目

方式一:IDE启动

由于Spring Boot内置了Tomcat服务器,我们可以直接点击启动类类名左边的三角符号或右击该类以运行项目。项目启动后如下图:

别慌,404正常

IDEA下方日志会出现服务器加载的端口号(此处为8080),在浏览器中访问对应端口号可以访问项目。因为我们还没有配置访问地址,所以此处显示的是错误信息。

刚开始只知道IDE启动即可,后续启动方式可当阅读拓展

方式二:终端启动

打开终端,在pom.xml同级目录中,输入mvn spring-boot:run即可运行,运行结果如下:

终端启动

方式三 jar包启动

  1. 打包项目,终端指令为:mvn install,生成target文件夹及项目对应的jar包

  2. 运行jar包,为了保证后台运行,可使用hohup指令:nohup java -jar demo1-0.0.1-SNAPSHOT.jar &

  3. 停止项目,可根据提供的PID号来杀死进程


    终端操作
  4. 在服务器中我们可以使用脚本来快捷启动或停止项目,脚本如下:

    #!/bin/bash
    #启动脚本 start.sh
    nohup java -jar $1 &
    

    启动方式:sh start.sh demo1-0.0.1-SNAPSHOT.jar

    #!/bin/bash
    #停止脚本 stop.sh
    PID=$(ps -ef | grep $1 | grep -v grep | awk '{ print $2 }')
    if [ -z "$PID" ]
    then
        echo The target application has been existed!
    else
        echo kill target $PID
        kill $PID
    fi
    

    停止方式:sh stop.sh demo1-0.0.1-SNAPSHOT.jar

    这里简单解释一下停止脚本:

    看备注
> ps -ef | grep demo1-0.0.1-SNAPSHOT.jar #查询所有与目标文件相关的进程,包括grep自身
  501 18405     1   0  9:53下午 ttys000    0:11.82 /usr/bin/java -jar demo1-0.0.1-SNAPSHOT.jar
  501 18783 17707   0  9:58下午 ttys001    0:00.01 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn demo1-0.0.1-SNAPSHOT.jar
> ps -ef | grep demo1-0.0.1-SNAPSHOT.jar | grep -v grep #过滤查询进程中grep的进程
  501 18405     1   0  9:53下午 ttys000    0:11.93 /usr/bin/java -jar demo1-0.0.1-SNAPSHOT.jar
> ps -ef | grep demo1-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{ print $2 }' # 提取输入的第二列,即进程的PID
18405

1.4.添加简单访问路径

在启动类同级目录下创建三个名为controllerservicedao的文件夹用于视图服务数据控制。在controller文件夹创建一个IndexController.java的文件,代码及结构如下图:

结构图

重新启动服务,浏览器访问http://localhost:8080/index/home 即可看到效果。

项目结构及注解简析

3.1项目结构

SpringBoot项目简单结构如下:

├── demo1
│   ├── pom.xml # 依赖管理
│   ├── src
│   │   ├── main
│   │   │   ├── java # 核心代码
│   │   │   │   └── online
│   │   │   │       └── yuluo
│   │   │   │           └── demo1
│   │   │   │               ├── Demo1Application.java
│   │   │   │               ├── controller
│   │   │   │               ├── dao
│   │   │   │               └── service
│   │   │   └── resources #项目资源文件
│   │   │       ├── application.properties #项目配置文件 可用application.yml代替
│   │   │       ├── static #静态资源文件
│   │   │       └── templates #模板文件,可存放邮件、SMS等模板
│   │   └── test #测试
│   │       └── java
│   │           └── online
│   │               └── yuluo
│   │                   └── demo1
│   │                       └── Demo1ApplicationTests.java
│   └── target #打包目标生成文件

3.2本文涉及注解

  1. @SpringBootApplication:SpringBoot入口文件专用,等价于以下三个注解:
    1. @SpringBootConfiguration:应用了Spring中的@Configuration注解,与@Bean搭配可取代XML文件,将对象注册为Bean
    2. @EnableAutoConfiguration:自动配置Spring上下文,将所有符合条件的@Configuration配置加载到IOC容器中
    3. @ComponentScan:自动扫描所有@Component注解,将其注册为Bean
  2. @RestController:等价于以下两个注解:
    1. @Controller@Component的子注解
    2. @ResponseBody:将返回的Java对象信息转换为Json数据返回
  3. @RequestMapping:将HTTP请求映射到REST控制器上,可以配置请求路径及请求方式,后面会见到很多用法,后续展开

源码访问:Github 55440cc

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容