在介绍SpringBoot之前,我们首先回忆一下我们在使用SSM来搭建一个项目的步骤,首先我们肯定需要创建一个Maven项目,然后我们需要引入Spring相关的依赖,然后我们还需要引入MyBatis的相关依赖,还需要配置相关的配置文件,另外我们还需引入Spring MVC的依赖,也是需要配置相关的配置文件,最后我们还要给我们的项目配置Tomcat,至此我们才算初步完成了一个项目的搭建。
看完上面的步骤是不是非常的麻烦,并且其中的依赖太多了, 且存在版本问题,那么使用SpringBoot的好处呢?SpringBoot的设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。总之SpringBoot的初衷就是为了简化spring的配置,使得开发中集成新功能时更快,简化或减少相关的配置。
这里我们构建SpringBoot项目,就使用最基础的方式,首先我们先构建一个基础的Maven项目,如下:
然后我们输入项目的一些信息,选择项目路径等,就可以完成了。
接下来其实非常的简单,我们就可以按照Spring Boot 上的介绍来做,其实就是我们首先需要Spring Boot的父级依赖,如下:
上图中,我们还指定了项目的编码及jdk的版本号,我们还可以用下面一种方式,也可以进行配置。
其实这样我们的SpringBoot项目已经初步完成了,是不是超简单,这里我们从SpringBoot官网copy下来的一个小示例,如下:
@EnableAutoConfiguration
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping("/hello")
public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
return String.format("Hello %s!", name);
}
}
然后我们右击启动该项目即可,访问上述路径localhost:8080/hello
其中@RestController、@GetMapping及@RequestParam,我们应该都是比较熟悉的了,在SpringMVC中都已经学习过了,这里我们主要来看一下@EnableAutoConfiguration
,这个注解告诉Spring Boot需要根据添加的jar 依赖猜测你想如何配置Spring,比如我们上述添加了 spring-boot-starter-web 依赖,其中就包括Tomcat和Spring MVC,所以SpringBoot会根据在开发一个web应用的要求来对Spring进行设置。、
我们可以看到是通过@Import注解来引入了AutoConfigurationImportSelector类,有关@Import注解的作用在Srping中已经介绍过了
我们可以从中看到,通过AutoConfigurationImportSelector类,引入了META-INF/spring.factories,其中是SpringBoot中默认就加载的组件
这里我们再来改一改上述我们的测试方法,我们把刚刚访问到hello方法,单独写到DemoController类中去,放置到controller包下,这才是我们日常开发中标准的项目,如下:
@EnableAutoConfiguration
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@RestController
public class DemoController {
@GetMapping("/hello")
public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
return String.format("Hello %s!", name);
}
}
然后我们在运行这个项目,然后依旧是访问localhost:8080/hello
,发现报错了
这是为什么呢?其实我们回想一下Spring就可以明白了,我们没有进行扫描相应的类或包呀,我们的@EnableAutoConfiguration只是用于引入一些第三方的组件,但是它不具备扫描功能呀,所以这里我们需要使用@SpringBootApplication
,如下:
这里我们需要注意的是,这个@SpringBootApplication
注解扫描的是启动类的所有同级文件夹,所以我们千万不要将启动类放错了地方
这时,我们再启动项目,就可以进行访问了,如下:
修改端口号
这里我们再来看看如何修改Spring Boot的默认端口号:8080,其实也是非常的简单,我们只需要在配置文件中修改即可,如下:
server.port=8081
上述我们是使用.properties文件,进行修改的,我们还可以使用yml来进行修改,其实也是一样的,如下:
server:
port: 8082
注意: 如何properties文件和yml文件同时存在的话,会优先以properties文件为主
添加项目名称
另外我们还可以在SpringBoot的访问路径上加上项目的名称,原来在Spring的项目中,我们是可以在Tomcat中进行配置的,这里我们就直接在配置文件中修改即可:
server.servlet.context-path=/demo
注意: 不要忽略了前面的 " / " 哦,另外yml也是类似的配置。
最后其实我们在构建一个SpringBoot的项目时,还可以更简单,我们直接可以使用IDEA帮助我们构建一个,如下:
在这里我们可以选择Spring Boot的版本,还可以添加一些我们需要的组件,如下:
完成后,其项目结构如下
我们可以进行查看其pom文件,其实和我们自己用Maven工程来搭建SpringBoot是差不多的
<?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>
<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.kimi</groupId>
<artifactId>springboot2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot2</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<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>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>