文章目录
1. 初始SpringBoot
1.1 springboot创建方式
springboot本质上是一个maven工程,下面介绍三种创建方式:
-
在线创建
在线创建是springboot官方提供的一种创建方式,官网地址为https://start.spring.io/,打开如下:
在页面将信息填写完成后,单击GENERATE按钮生成模块并下载到本地,解压后使用IDEA打开该项目即可使用。
-
通过maven创建
使用Maven创建Spring Boot项目,以IDEA为开发工具,具体步骤如下:
-
创建一个普通的Maven项目,如下所示:
-
输入组织名和模块名,如下所示:
-
创建完成后在pom.xml文件添加依赖。
-
添加完成后,在java目录下创建一个名叫App的启动类。
-
最后执行main方法就可以启动一个Spring Boot项目了。
-
-
使用Spring Initializer快速创建
上述两种方法比较繁琐,推荐使用Spring Initializer的方式快速构建SpringBoot项目。这种方式不仅可以生成完整的目录结构,还可以生成一个默认的主程序,从而节省时间。
-
创建项目时选择Spring Initializer,如下:
-
输入项目基本信息:
-
选择需要添加的依赖:
-
选择项目创建路径:
-
至此,Spring Boot项目创建完成。
-
1.2 Spring Boot项目结构介绍
1.2.1 目录结构
- src/main/java:放置所有的Java源代码文件。
- src\main\resources\static:用于存放静态资源,如图片、CSS、JavaScript等。
- src\main\resources\templates:用于存放Web页面的模板文件,如Thymeleaf。
- src\main\resources\application.properties:配置信息,如应用名、服务端口、数据库配置等,SpringBoot默认支持两种配置文件类型,即.properties和.yml。
- src/test:单元测试目录,生成的ApplicationTests通过JUnit4实现,可以直接运行SpringBoot应用的测试。
- target:放置编译后的.class文件、配置文件等。
1.2.2 启动类
SpringBoot的启动类的类名是根据项目名称生成的,它的作用是启动SpringBoot项目,是基于main方法运行的。
启动类中@SpringBootApplication注解:是一个组合注解,包含@SpringBootConfiguration+@EnableAutoConfiguration+@ComponentScan三个注解,是项目启动注解。
- @SpringBootConfiguration:是@Configuration注解的派生注解,跟@Configuration注解的功能一致,标注这个类是一个配置类,只不过@SpringBootConfiguration是springboot的注解,而@Configuration是spring的注解。
- @Configuration:通过对Bean对象的操作替代spring中xml文件。
- @EnableAutoConfiguration:Spring Boot自动配置(auto-configuration),尝试根据添加的jar依赖自动配置Spring应用。是@AutoConfigurationPackage和@Import(AutoConfigurationImportSelector.class)注解的结合。
- @AutoConfigurationPackage:自动注入主类下所在包下所有加了注解的类(@Controller、@Service等),以及配置类(@Configuration)。
- @Import:直接导入普通的类。
- @ComponentScan:组件扫描,可自动发现和装配一些Bean。
- @ConfigurationPropertiesScan:@ConfigurationPropertiesScan扫描配置属性。@EnableConfigurationProperties注解的作用是使@ConfigurationProperties注解的类生效。
注意:启动类在启动时会做注解扫描(@Controller、@Service、@Repository…),扫描位置为同包或者子包下的注解,所以启动类的位置应放于包的根下。
1.2.3 pom文件
-
继承:SpringBoot的父级依赖,只有继承如下依赖项目才是真正的SpringBoot项目:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.3</version> <relativePath/> <!-- lookup parent from repository --> </parent>
spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖。使用它之后,常用的包依赖可以省去version标签。
-
依赖:使用Spring Initializer快速创建的Spring Boot项目默认添加了如下依赖:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org..boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
- spring-boot-starter-web:spring-boot-starter-web启动器支持全栈式Web开发,包括Tomcat和spring-webmvc等,引入该启动器便能获得Web服务相关场景的Jar包。
- spring-boot-starter-test:引入这个启动器,就会把所有与测试相关场景的Jar包引入。
Spring Boot提供了非常多的starters启动器。starters启动器包括了一系列可以集成到应用里的依赖包,可以一站式集成Spring及其他技术,而不需要到处找示例代码和依赖包。例如如果要使用Spring JPA访问数据库,只需要加入spring-boot-starter-data-jpa启动依赖就能使用了。
starters包含了许多项目中需要的依赖,它们能快速持续地运行,都是一系列得到支持的管理传递性依赖。
Spring Boot官方的启动器都是以spring-boot-starter-命名的,代表了一个特定的应用类型。
第三方的启动器不能以spring-boot-开头命名,它们都是被Spring Boot官方保留。一般一个第三方的启动器应这样命名:Mybatis的mybatis-spring-boot-starter。
-
插件
spring-boot-maven-plugin插件是将Spring Boot应用程序打包成jar包的插件:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
将所有应用启动运行所需要的Jar包都包含进来,从逻辑上讲具备了独立运行的条件。可以使用"mvn package"进行打包,然后使用"java-jar项目"命令就可以直接运行。
1.3 Spring Boot在Controller中常用注解
-
@RestController
@RestController注解包含了原来的@Controller和@ResponseBody注解。@ResponseBody注解是将返回的数据结构转换为JSON格式。
-
@GetMapping
@RequestMapping(method=RequestMethod.GET)的缩写,请求资源应该使用GET。
-
@PostMapping
@RequestMapping(method=RequestMethod.Post)的缩写,添加资源应该使用Post。
-
@PutMapping
@RequestMapping(method=RequestMethod.Put)的缩写,更新资源应该使用Put。
-
@DeleteMapping
@RequestMapping(method=RequestMethod.Delete)的缩写,删除资源应该使用Delete。