说明:首先是Java环境要都配置好,这里不再繁琐地进行说明。教程还是很多,可以百度一下,自行搭建一下。
Spring 新建项目
Spring Boot 有多种创建方式,国内大多数选择的还是以 mave 搭建工程。所以后面搭建工程还是以 maven 为主。其他的方式后面了解学习一下。
创建工程
1.新建工程
2.选择创建maven工程
3.创建
Group:项目组织的标识符;
Artifact:项目标识符;
version:项目版本号;
不同的IDEA可能展示的界面不一样。不过比较重要的就是上述三个说明。
然后一路 next
最后创建好的工程如下
main.java:主要存放业务代码
resources:主要存放配置文件
test.java:主要存放单元测试的代码
根据目录总得来说可以分为4个部分:
-
Java类文件:主要存放 Java 类文件,即主业务的逻辑代码;
-
资源文件:配置文件:存放 .yml 文件或者 .properties文件。其配置属于K-V形式的
-
测试类文件:用于存放对 Java 类文件中逻辑代码测试的 Java代码文件;
-
pom文件:maven 项目构建的重要文件;
改造
将 Maven 工程改造为 Srping Boot 工程。
首先在 pom.xml 文件中添加 Spring Boot 依赖,构建 Spring Boot 工程。pom.xml 配置如下:
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--项目分组、项目名称、版本号-->
<groupId>com.azh</groupId>
<artifactId>first-spring-boot-prj</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>first-spring-boot-prj</name>
<description>第一个 Spring Boot 工程</description>
<!-- 父项目的坐标,坐标包括group ID,artifact ID和version -->
<!-- 如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值 -->
<parent>
<!--被继承的父项目的构件标识符 -->
<artifactId>spring-boot-starter-parent</artifactId>
<!--被继承的父项目的全球唯一标识符 -->
<groupId>org.springframework.boot</groupId>
<!--被继承的父项目的版本 -->
<version>2.3.9.RELEASE</version>
<!-- 父项目的pom.xml文件的相对路径,默认值是../pom.xml。 -->
<!-- 寻找父项目的pom:构建当前项目的地方->relativePath指定的位置->本地仓库->远程仓库 -->
<relativePath/><!-- lookup parent from repository -->
</parent>
<!--工程属性的全局配置-->
<properties>
<!-- 源文件编码形式 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 所有插件输出编码形式 -->
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Java 版本 -->
<java.version>1.8</java.version>
</properties>
<!-- 定义的依赖清单,有所依赖包都需要写在这个标签里面 -->
<dependencies>
<!-- spring boot 启动依赖,由于指定了spring parent版本,所以这里可以不指定 -->
<dependency>
<!--依赖项的组织名-->
<groupId>org.springframework.boot</groupId>
<!--依赖项的子项目名-->
<artifactId>spring-boot-starter</artifactId>
<!--依赖项的版本-->
<!--<version>${引用properties中定义的全局配置变量}</version>-->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<!-- 依赖项的适用范围 -->
<scope>test</scope>
<!-- 可选依赖 ,对外隐藏当前所依赖的资源,是不透明的;如果别人依赖了本项目,
被配置的不会在别人的项目中依赖到 -->
<!-- <optional>true</optional> -->
<!-- 排除依赖,主动断开依赖的资源,排除项目中的依赖冲突时使用,
不依赖该项目,被排除的资源不需要指定版本-->
<!-- <exclusions>
<exclusion>
<groupId></groupId>
<artifactId></artifactId>
</exclusion>
</exclusions>-->
</dependency>
<!--一般我们开发是Web项目,所以还需要引入 Web 的 Starter-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
复制代码
创建入口类 xxxApp
创建位置位于上述的 Java 目录中
代码如下:
@EnableAutoConfiguration
public class FirstSpringBootPrjApplication {
public static void main(String[] args) {
SpringApplication.run(FirstSpringBootPrjApplication.class, args);
}
}
复制代码
解释:
-
@EnableAutoConfiguration 注解表示开启自动化配置。由于项目中添加了 spring-boot-starter-web 依赖,因此在开启了自动化配置之后,会自动进行 Spring 和 Spring MVC 的配置
-
在 Java 项目的 main 方法中,通过 SpringApplication 中的 run 方法启动项目。 第一个参数传入 App.class,告诉 Spring 哪个是主要组件。第二个参数是运行时输入的其他参数。
接下来创建一个 Spring MVC 的控制器
创建一个 controller 文件,存放通过 http/https 访问的接口文件。创建如下:
@RestController
public class hello {
@GetMapping("/hello")
public String herllo(){
return "hello spring boot !";
}
}
复制代码
解释:
在控制器中提供一个 “/hello” 接口,此时需要配置包扫描才能将 hello 注册到 Spring MVC 容器中,所以需要在 FirstSpringBootPrjApplication 上添加一个注解 @ComponentScan 进行包扫描。
也可以直接使用组合注解 @Spring BootApplication 来代替 @EnableAutoConfiguration 和 @ComponentScan。
项目启动
有三种启动方式:
-
使用 maven命令启动:mvn spring-boot run
-
直接运行 mian 方法
启动报错,打印信息如下:
....
** WARNING ** : Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package.
...
Caused by: java.lang.IllegalStateException: Could not evaluate condition on org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$EmbeddedDatabaseConfiguration due to org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseType not found. Make sure your own configuration does not rely on that class. This can also happen if you are @ComponentScanning a springframework package (e.g. if you put a @ComponentScan in the default package by mistake)
复制代码
出现这个问题是因为我搭建的目录结构导致,启动类直接创建在了 main/java 文件下了。@ComponentScan 扫描范围是当前包以及以下。而启动类 FirstSpringBootPrjApplication 不属于任何一个包,所以启动类没有包,导致启动提示可能因为 @ComponentScan 注解导致启动失败,其次 main/java 并不是一个包,它是一个资源文件夹。
重新调整一下目录结构,并制定 @ComponentScan 扫描的路径
目录调整如下:
代码如下:
@ComponentScan(basePackages = {"com.azh.*"})
@EnableAutoConfiguration
public class FirstSpringBootPrjApplication {
public static void main(String[] args) {
SpringApplication.run(FirstSpringBootPrjApplication.class, args);
}
}
复制代码
启动信息如下:
...
2021-12-19 17:04:03.430 INFO 68842 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2021-12-19 17:04:03.437 INFO 68842 --- [ main] com.azh.FirstSpringBootPrjApplication : Started FirstSpringBootPrjApplication in 0.981 seconds (JVM running for 1.329)
...
复制代码
看到这样的信息表示启动成功。[JVM running for 1.329]
启动成功后,在浏览器访问:http://localhost:8080/hello
界面显示:hello spring boot !
至此,一个 spring boot 项目创建成功。还有其他非常便捷的创建方法,这里就不做赘述了。基本是一键创建的过程。
- 打包启动:Spring Boot 也可以直接打成 jar 包运行。 在生产环境中,也可以通过这样的方式来运行一个 Spring Boot 应用。 事实上,也是这样做的。
打包需要添加插件到 pom.xml 中,添加如下:
<!-- 构建项目所需要的信息 -->
<build>
<!-- 插件管理 -->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.9.RELEASE</version>
</plugin>
</plugins>
</build>
复制代码
具体的打包细节后面介绍,开始只介绍一下启动。
使用 maven 命令打包:mvn package。在 target 目录下会生成一个 jar 包。然后使用 java -jar 命令执行 jar 包即可。
小结
讲这个复杂的是因为可以更好地方便自己了解创建过程,以及 pom.xml 的一些相关知识。查了一下 pom.xml 的相关知识:参考 pom 文件详解
截图如下:因为 CSDN 老是有图片丢失的情况发生




近期评论