Spring Boot入门程序

环境约束

  • jdk1.8.0_291
  • maven3.6.3
  • idea2019.2.3
  • Spring Boot 2.1.9.RELEASE

maven 的安装和配置请看这里

需求

浏览器发送 hello 请求,服务器接受请求并响应 Hello World 字符串

实现

1. 创建一个 maven 工程(jar)

在这里插入图片描述
这里强调一点,不管是搭建web工程还是其它工程,都只需要像上面这样创建一个基本的maven工程就行,而不需要去选择那些maven的骨架
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
初始项目结构如下
在这里插入图片描述

2. 导入 Spring Boot 相关的依赖

父工程的 pom.xml 文件中添加如下内容

<!-- Springboot要求,所有的Springboot项目都要继承Springboot的起步依赖spring-boot-starter-parent -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.2</version>
</parent>

需要引入 web 依赖的子模块的 pom.xml 文件中添加如下内容

<!-- 
	Springboot要集成Springmvc进行controller的开发,所以项目要导入web的启动依赖
	由于在parent中已经指定了版本,所以在dependencies中关于spring-boot的依赖就不需要版本了,如果要引入其他的,仍然需要指定版本
-->
<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
</dependencies>

idea 会自动下载相关的 jar 包

3. 编写一个主程序启动 Spring Boot 应用

注意两个类所在的包处于不同的级别,之所以这样是和@SpringBootApplication注解里面的@ComponentScan注解有关,这个注解会默认扫描其同级的文件和子包下的文件,先给出最终的项目结构图
在这里插入图片描述

package com.lwx;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @SpringBootApplication 用于标注一个主程序类,说明这是一个 Spring Boot 引导类
 */
@SpringBootApplication
public class HelloWorldApplication {
    public static void main(String[] args) {
        // run方法表示运行Springboot的引导类,参数就是该引导类的字节码对象
        SpringApplication.run(HelloWorldApplication.class, args);
    }
}
4. 编写相关的 Controller

这里不需要写 Service

package com.lwx.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {
    @ResponseBody
    @RequestMapping("/hello")
    public String hello() {
        return "Hello World";
    }
}
5. 运行前面写好的 HelloWorldApplication 类

从控制台可以看到如下结果
在这里插入图片描述
如果直接访问 http://localhost:8080/ 会看到如下页面
在这里插入图片描述
我们需要访问 http://localhost:8080/hello,这时会出现如下页面
在这里插入图片描述
可以发现,在以上过程中,我们并没有像使用 SSM 框架时那样配置包扫描路径、视图解析器、前端控制器等,这是在开发时给我们带来的方便之处,也没有要求我们必须安装 Tomcat 的环境,因为 Spring Boot 已经整合/内嵌了 Tomcat/jettyUndertow

除此之外,在部署方面,Spring Boot 也很方便

Spring Boot 应用的部署

在以前,我们如果想要部署一个 web 应用,首先要将应用打成 war 包,然后将其放在安装了 Tomcat 服务器的环境中,但使用了 Spring Boot 之后,我们可以将一个应用直接打成可执行的 jar 包,从而可以在没有部署 Tomcat 的环境中运行,但 jdk 还是需要装的

1. 在 pom.xml 文件中添加如下内容

哪个模块需要 build,就把该插件加在该模块的 pom 文件中。
需要 build 的模块一般都是 main 函数所在的模块,如果 main 函数所在的模块引用了其它模块,则在打 jar 包时,则被引用的模块也会被打成 jar 包包含进去

<!-- 作用:将应用打成一个可执行的 jar 包 -->
<build>
   <plugins>
       <plugin>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-maven-plugin</artifactId>
       </plugin>
   </plugins>
</build>
2. 双击应用的 package

在这里插入图片描述
在这里插入图片描述
或者直接打开 idea 的终端,在项目根目录下输入mvn clean package -Dmaven.test.skip=true也可以
在这里插入图片描述
生成的新 jar 包会覆盖以前的同名 jar 包

3. 运行 jar 包

首先关闭 idea 中的服务器(避免端口冲突),然后在「终端」中进入 jar 包所在的路径,使用 java -jar spring-boot-helloworld-1.0-SNAPSHOT.jar 命令运行 jar 包,运行成功后的界面如下
在这里插入图片描述
从上图可以看到应用已经成功启动,端口为 8080,这时我们在浏览器中访问 http://localhost:8080/hello 即可看到结果如下
在这里插入图片描述
使用解压缩软件打开 .jar 文件,可以看到里面有 .class 文件以及一些 jar 包
在这里插入图片描述
由上面的介绍可知,SpringBoot程序默认使用的端口就是Tomcat的默认端口8080

如果我们不想使用8080端口启动应用,只需在启动命令中加上端口号即可:java -jar -Dserver.port=8081 spring-boot-helloworld-1.0-SNAPSHOT.jar,不需要改变程序的任何值

需要说明的是,实测使用java -Dserver.port=8081 -jar spring-boot-helloworld-1.0-SNAPSHOT.jar也是可以正常启动的

再就要如果应用中的resources目录下有application.yml文件,并且其中设置的端口号和启动命令中设置的端口号不一致,此时仍会以启动命令中设置的端口号来启动应用

server:
  port: 8082

同一个服务用两个不同的端口号启动

  • 如果是用命令行启动,开两个窗口之后,在启动命令中设置不同的端口号即可
  • 如果是在idea中启动,添加两个SpringBoot,然后设置不同的端口号即可
    在这里插入图片描述
    关于-D可以参考这篇文章

启动命令中还可以设置jvm参数,如java -Xms10m -Xmx80m -jar xxx.jar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值