这里写目录标题
- 前言
- SpringBoot简介
- 重要策略
- Spring Boot 项目约定
- IntelliJ IDEA 直接创建
- Maven项目改造创建
- 常见项目结构
- 代码层
- 资源文件结构
- 主要文件说明
- @SpringBootApplication 注解分析
- 总结
前言
使用 Servlet/JSP 开发 JavaWeb 时,一个接口对应一个Servlet,配置很繁琐。未尽量减少这种麻烦,Spring Boot 应用而生。它是由 Pivotal 团队提供的全新框架,目的适用于简化 Spring 应用的初始搭建即开发过程。本文记录下创建步骤。
SpringBoot简介
重要策略
- 开箱即用:Outofbox,指在开发过程中,通过在 Maven 项目的 pom 文件中添加相关依赖包,然后使用对应注解来代替繁琐的 XML 配置文件以管理对象的生命周期。这一特点使得开发人员摆脱了复杂的配置工作以及相关依赖的管理工作,更加专注于业务逻辑;
- 约定优于配置:Convention over configuration,一种由 SpringBoot 本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。这一特点虽然降低了部分灵活性,增加了 BUG 定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量 XML 配置,而且可以将代码编译、测试和打包等工作自动化;
Spring Boot 项目约定
-
约定项目中有且只有一个入口类,其类名推荐使用:xxxApplication.java。而且该入口类必须位于所有的子包之外,其中必须存在一个用于启动项目的 main 函数。
-
此外, Spring Boot 项目约定必须在项目根目录中存在一个名为 application.yml 或者 application.prpperties 的配置文件,一般是位于 resources 目录下。
IntelliJ IDEA 直接创建
- 新建项目,选择Spring Initializr
选择 Web 依赖 和 Spring Boot 版本号,点击 Create:
至此就借助SpringBoot插件(有插件才有Spring Initializr的创建方式,如果没有该创建方式选项,先到Plugins中安装“Spring Boot”插件)完成了基本创建:
Maven项目改造创建
1.新建一个Maven项目:
在2022.3.1的新版本中,创建一个普通项目,选中Maven做Bulid system 即可
更多新版本创建Maven项目的方式可以参考2022版 的IDEA创建一个maven项目(超详细)。
创建好普通的Maven项目,做一些配置调整,在pom.xml文件中,需要添加SpringBoot的依赖。
专业详细的配置和解读请参考:
- 英文:Developing Your First Spring Boot Application
- 中文:开发你的第一个Spring Boot应用程序
编辑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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.utah</groupId>
<artifactId>Maven2</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
</dependencies>
</project>
然后创建启动类SpringBootApplication
:目录结构见下图
package org.utah;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@EnableAutoConfiguration //开启自动配置
public class SpringBootApplication {
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(SpringBootApplication.class, args);
}
}
以上@RequestMapping
注解提供了 “routing” (路由)信息。 它告诉Spring,任何带有 / 路径的HTTP请求都应该被映射到 home 方法。@RestController
注解告诉Spring将返回的结果字符串直接响应给客户端。
@RestController 和 @RequestMapping 注解是Spring MVC注解(它们不是Spring Boot特有的)。 详情见Spring参考文档中的 MVC部分。
然后执行这个main方法,得到下图显示输出:
访问 localhost:8080验证:
至此,用mave项目改造基本完成。
常见项目结构
网上看到的常见项目结构,这里记录借鉴下。
代码层
根目录:com.springboot:
- build :工程启动类;
- entity :实体类;
- dao :数据访问层;
- service :数据服务层,业务类代码;
- controller :前端访问控制器;
- config :配置信息类;
- util :工具类;
- constant :常用接口类;
- vo:数据传输类;
- Application.java:项目的启动类;
资源文件结构
根目录 src/main/resources:
- config :.properties、.json 等配置文件;
- i18n :国际化相关;
- META-INF/spring :spring.xml ;
- static :页面以及 js、css、image 等分别放在各自文件夹下;
主要文件说明
- pom.xml文件:maven依赖关系文件。
- SpringBootApplication.java:该文件内含main函数,用于启动应用程序。
- main方法:它相当于程序的一个入口。通过调用run方法,将业务委托给springboot的SpringApplication类, SpringApplication将引导我们的应用,启动spring,继而启动被我们配置好的tomcat web服务器。
- application.properties:一个空的properties文件,可根据需要配置属性。
@SpringBootApplication 注解分析
相关代码
package org.springframework.boot.autoconfigure;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
......
}
说明
@SpringBootApplication 标注该类是一个启动类,可以看做是 @Configuration、@EnableAutoConfiguration、@ComponentScan 的集合;
- @Configuration :允许在上下文中注册额外的 Bean 或导入其他配置;
- @EnableAutoConfiguration:启动 Spring Boot 的自动配置机制;
- @ComponentScan:扫描被 @ComponentScan(@Service、@Controller、@Repository) 注解的 Bean,默认扫描该类所在包下所有类,将这些 Bean 定义加载到 IOC 容器中;
总结
文章主要介绍了两种创建 SpringBoot 的方式,一种是通过 借助IDEA中插件默认创建的方式,另一种则是通过Maven项目改造的方式,两个方式其实效果都是一样的,只不过形式不同而已。还有一种就是直接到 https://start.spring.io/ 来生成 Spring Boot 项目,将生成的压缩包下载导入到IDE中也行,形式大致和IDEA直接用插件方式创建类似。