弱小和无知不是生存的障碍,傲慢才是。 ——《三体》
引言
作者在校内项目开发过程中,总结了基于SpringBoot的Web后端项目快速成型流程。本文旨在讨论作者的开发经验,为同为新手的开发者提供参考,同时希望有经验的工程狮大大垂阅斧正。
创建 SpringBoot 项目
使用 IDEA 创建 Spring Initializr 项目,并填写配置。
-
IDEA中自动配置的初始 pom 依赖包括 :spring-boot-starter-web, spring-boot-starter-test
-
配置application.yml (properties) 文件,写入全局配置,如服务器端口,日志级别。
###### Tomcat server ###### server: port: 8080 ###### log ###### logging: level: com.itheima: debug # 系统内日志级别 org.springframework: info # spring 日志级别
创建POJO类
在 pojo 包中创建实体类 (使用 Lombok 简化实体类)
-
(IDEA上安装 Lombok 插件,使 IDEA 可以识别 lombok 注解)
-
引入 lombok 依赖
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
-
创建实体类 (User)
@Data // lombok注解 public class User { private Long id; private String userName; private String password; private String name; private Integer age; private Integer sex; private Date birthday; private String note; private Date created; private Date updated; }
创建 M-V-C
M: 通用Mapper
通过注解方式,将实体类改造成 ORM 模型,并创建 Mapper
-
添加通用 Mapper 启动器依赖
<dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.1.5</version> </dependency>
-
修改实体类,添加
@Table
,@Id
,@Column
等注解@Data @Table(name = "tb_user") // 映射到表 public class User { @Id // 主键 @KeySql(useGeneratedKeys = true) // 主键回填 private Long id; /* 正常命名时,不需要 @Column */ private String userName; private String password; private String name; private Integer age; private Integer sex; private Date birthday; private String note; private Date created; private Date updated; }
-
创建模型对应的 Mapper (接口),继承 tk 中的 Mapper
public interface UserMapper extends Mapper<User> {}
-
在系统启动器上添加 tk 的Mapper扫描注解
@MapperScan
,传入Mapper包1@SpringBootApplication @MapperScan("com.itheima.mapper") public class HeimaSpringbootApplication { public static void main(String[] args) { SpringApplication.run(HeimaSpringbootApplication.class, args); } }
C: 创建业务
创建 Service
-
在 service 包中创建对应的 Service 。添加
@Service
注解 -
在该 Service 中注入对应的 Mapper
@Service public class UserService { private UserMapper userMapper; @Autowired(required = false) public void setUserMapper(UserMapper userMapper) { this.userMapper = userMapper; } /** * 根据 id 查询用户 * @param id 目标 id * @return 结果用户 */ public User queryById(Long id) { return userMapper.selectByPrimaryKey(id); } /** * 插入用户 * @param user 插入用户 */ public void addUser(User user) { System.out.println("新增用户..."); userMapper.insertSelective(user); } }
V: 创建对应 Controller
-
在 controller 包中创建对应 Controller,添加
@RestController
注解 -
注入所需组件(Service 等)
-
在各方法上添加对应请求注解 (
@RequestMapping
/@GetMapping
etc. )@RestController public class HelloController { private DataSource dataSource; private UserService userService; @Autowired public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } @Autowired public void setUserService(UserService userService) { this.userService = userService; } @GetMapping("hello") public String hello() { System.out.println("DataSource: " + dataSource); return "Hello Spring Boot你好"; } /** * 根据用户id,查询用户 * @param id 用户id * @return 用户 */ @GetMapping("/user/{id}") public User queryById(@PathVariable Long id) { return userService.queryById(id); } }
至此,系统的 User MVC 开发完成
集成测试
运行或调试整个系统的启动器,即可测试系统的运行状况
单元测试
使用 JUnit 5 对业务进行单元测试
-
打开要测试的 Service,在类名上按 Ctrl + Shift + T ,创建测试类
-
在类上添加
@SpringBootTest
注解2 -
在 Service 的测试类中使用
@Autowired
注入 Service 对象 -
在各方法中编写测试逻辑,如:
@Test void queryById() { User user = userService.queryById(1L); System.out.println("User: " + user); }
-
运行类或方法进行测试