SpringBoot快速搭建Web后端

弱小和无知不是生存的障碍,傲慢才是。 ——《三体》

引言

作者在校内项目开发过程中,总结了基于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

  1. 添加通用 Mapper 启动器依赖

    <dependency>
        <groupId>tk.mybatis</groupId>
        <artifactId>mapper-spring-boot-starter</artifactId>
        <version>2.1.5</version>
    </dependency>
    
  2. 修改实体类,添加 @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;
    
    }
    
  3. 创建模型对应的 Mapper (接口),继承 tk 中的 Mapper

    public interface UserMapper extends Mapper<User> {}
    
  4. 在系统启动器上添加 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

  1. 在 service 包中创建对应的 Service 。添加 @Service 注解

  2. 在该 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

  1. 在 controller 包中创建对应 Controller,添加 @RestController 注解

  2. 注入所需组件(Service 等)

  3. 在各方法上添加对应请求注解 ( @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 对业务进行单元测试

  1. 打开要测试的 Service,在类名上按 Ctrl + Shift + T ,创建测试类

  2. 在类上添加 @SpringBootTest注解2

  3. 在 Service 的测试类中使用 @Autowired 注入 Service 对象

  4. 在各方法中编写测试逻辑,如:

    @Test
    void queryById() {
        User user = userService.queryById(1L);
        System.out.println("User: " + user);
    }
    
  5. 运行类或方法进行测试


  1. 也可以选择在每个Mapper接口上添加 @Mapper 注解,但这种方式会添加大量多余的注解 ↩︎

  2. 在 JUnit 4 中,此处要在该注解前添加 @RunWith(SpringRunner.class) 注解 ↩︎

## 平台简介 可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。 诺寒基于hplus和inspinia两套后台系统模板开发。 http://www.zi-han.net/theme/hplus http://webapplayers.com/inspinia_admin-v2.7.1 ## 内置功能 1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现。 3. 岗位管理:配置系统用户所属担任职务。 4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。 7. 参数管理:对系统动态配置常用参数。 8. 通知公告:系统通知公告信息发布维护。 9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 10. 登录日志:系统登录日志记录查询包含登录异常。 11. 在线用户:当前系统中活跃用户状态监控。 12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 14. 系统接口:根据业务代码自动生成相关的api接口文档。 15. 在线构建器:拖动表单元素生成相应的HTML代码。 16. 连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值