03-SpringBoot第一个项目
第一个Springboot应用程序
使用JDK1.8、Maven3.3.6、SpringBoot2最新版
有两种创建Springboot的方式:
第一种:Spring官方提供了一个快速生成的网站
-
进入Spring的官网spring.io,找到Springboot框架,可以看到最新的稳定版本为2.4.3,在OVERVIEW的最下面可以看到Quickstart Your Project,点击Spring Initializr
-
然后进入项目创建页面,具体操作如下
-
将下载的项目解压
-
打开idea,创建一个空工程idea-springboot,然后在将该项目导入到该工程中,导入后会自动下载pom文件中的很多依赖,耗时会长一些,因为这些都会帮助我们配置很多东西。然后把一些多余的文件删掉
-
项目中的整个结构如下
ASpringbootHelloworldApplication内容如下
package com.studymyself; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; //程序的主入口,不能删除也不能修改 @SpringBootApplication public class ASpringbootHelloworldApplication { //SpringApplication public static void main(String[] args) { SpringApplication.run(ASpringbootHelloworldApplication.class, args); } }
-
其中ASpringbootHelloworldApplication类中是一个主方法,不能删也不能改。我们要创建的存储dao接口、存储service接口和其实现类、以及Controller类的dao、service、controller包必须和这个主类在同一级,不然项目不能正常工作 ,因为规定是这样,不按约定就没法识别,约定大于配置。其中的application.properties文件是Springboot的核心配置文件,但是我们常用的是yaml格式的配置文件。而test目录下有一个默认的测试类,用来测试的
-
直接运行主方法,可以看到其中有Tomcat启动的信息,我们直接输入localhost:8080回车,得到如下页面,默认跳转到/error的一个静态页面
-
在Application主方法类的同级目录中创建一个controller包,其中创建一个Controller类MyController
package com.studymyself.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @RestController: * 该注解放在类上,具有@Controller和@ResponseBody注解的功能 * 表示这个类是一个控制器 * 然后表示这个控制器中的所有方法返回String类型时都是返回字符串,而不是视图 * 而这两个分开,@ResponseBody就指定某一个控制器方法返回String时是返回字符串而不是视图 */ @RestController public class MyController { @RequestMapping("/hello") public String hello(){ //调用业务,接收前端参数 return "Hello SpringBoot!!!"; } }
添加完成后重启,输入http://localhost:8080/hello,就可以访问这个资源了。
-
解读pom文件。如下
<?xml version="1.0" encoding="UTF-8"?> <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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!--parent标签,表示是一个父项目--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.5.RELEASE</version> <!--下面这个标签表示的是一个远程的父项目--> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.studymyself</groupId> <artifactId>a-springboot-helloworld</artifactId> <version>0.0.1-SNAPSHOT</version> <name>a-springboot-helloworld</name> <description>The first project for springboot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <!--Web依赖:包括Tomcat、DispatcherServlet、xml...都不需要我们配了 非常重要--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--单元测试依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--spring-boot-starter是所有Springboot依赖的开头 当我们需要导入Springboot依赖时需要这样的开头--> </dependencies> <build> <plugins> <!--maven的打包插件,可以不需要--> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
上面主要有四个部分:
- 项目的元数据信息:创建项目时输入的Project Metadata部分,即Maven项目的基本组成:groupId、artifactId、version、name、description等
- parent:该pom文件继承spring-boot-starter-parent的依赖管理、版本控制和打包等内容
- dependencies:项目的具体依赖,这里包含了spring-boot-starter-web依赖,这是用于实现HTTP接口(该依赖中包含了SpringMVC的),官网对该依赖的描述:该依赖使用SpringMVC构建Web(包括Restful)应用程序的入门者,使用Tomcat作为默认的嵌入式容器(可修改)。还有一个spring-boot-starter-test是用于编写单元测试的依赖包。更多的以后项目中需要才自己导入
- build:构建的部分。默认使用spring-boot-maven-plugin。配合spring-boot-starter-parent就可以把Springboot的应用打成jar包直接运行了
-
使用maven窗口,点击package,将该项目打包,
-
打成jar包的Springboot应用就是一个微服务,功能元素。找到该jar包的目录位置,打开dos命令窗口,直接运行该jar包,然后在浏览器测试
第二种:使用idea,如下图所示(常用)
需要注意的是在dependencies阶段我们不添加SpringWeb依赖时,启动Application主程序时,执行完了就停下了,因为没有执行Tomcat服务器,没有导入服务器,所以不能持续执行。还有就是pom依赖中我们导入Spring Web依赖时,不需要后面添加版本号,它由父依赖中的版本号控制。
Springboot中有一个叫做热部署,当我们修改了代码时,不需要重启项目也能更新代码功能。需要导入Springboot中的一个依赖
<!--热部署:更新代码后不需要重启项目也能添加功能-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
在application.properties配置文件中修改端口号
#修改项目的端口号
server.port=8081