SpringBoot+JWT+Shiro+MybatisPlus如何实现Restful快速开发后端脚手架

发布时间:2021-11-23 23:06:38 作者:柒染
来源:亿速云 阅读:257
# SpringBoot+JWT+Shiro+MybatisPlus如何实现Restful快速开发后端脚手架

## 一、技术选型背景

现代企业级应用开发对后端框架的要求越来越高,需要同时满足快速开发、安全认证、数据持久化和RESTful风格等需求。本文介绍的组合方案:

- **SpringBoot 2.7**:提供快速启动和自动配置能力
- **JWT**:实现无状态认证
- **Shiro**:轻量级权限控制框架
- **MybatisPlus 3.5**:增强型ORM框架
- **Swagger**:API文档生成

## 二、项目初始化

### 1. 创建SpringBoot项目

```xml
<!-- 核心依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2. 添加关键依赖

<!-- JWT支持 -->
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.9.1</version>
</dependency>

<!-- Shiro整合 -->
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-spring-boot-starter</artifactId>
    <version>1.11.0</version>
</dependency>

<!-- MybatisPlus -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3.1</version>
</dependency>

三、JWT整合实现

1. JWT工具类封装

public class JwtUtils {
    private static final String SECRET = "your-secret-key";
    private static final long EXPIRE = 604800L; // 7天
    
    public static String generateToken(String userId) {
        return Jwts.builder()
                .setSubject(userId)
                .setIssuedAt(new Date())
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRE * 1000))
                .signWith(SignatureAlgorithm.HS512, SECRET)
                .compact();
    }
    
    // 验证和解析方法...
}

2. 自定义JWT Filter

public class JwtFilter extends AuthenticatingFilter {
    @Override
    protected AuthenticationToken createToken(...) {
        String jwt = getRequest().getHeader("Authorization");
        return new JwtToken(jwt);
    }
    
    @Override
    protected boolean onAccessDenied(...) {
        // 验证逻辑
    }
}

四、Shiro配置

1. 核心配置类

@Configuration
public class ShiroConfig {
    
    @Bean
    public ShiroFilterFactoryBean shiroFilter(...) {
        ShiroFilterFactoryBean factory = new ShiroFilterFactoryBean();
        Map<String, Filter> filters = new HashMap<>();
        filters.put("jwt", new JwtFilter());
        factory.setFilters(filters);
        
        // 设置过滤规则
        Map<String,String> filterMap = new LinkedHashMap<>();
        filterMap.put("/login", "anon");
        filterMap.put("/**", "jwt");
        factory.setFilterChainDefinitionMap(filterMap);
        return factory;
    }
}

2. Realm实现

public class JwtRealm extends AuthorizingRealm {
    
    @Override
    public boolean supports(AuthenticationToken token) {
        return token instanceof JwtToken;
    }
    
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(...) {
        // 权限校验逻辑
    }
    
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(...) {
        // 认证逻辑
    }
}

五、MybatisPlus整合

1. 基础配置

mybatis-plus:
  mapper-locations: classpath*:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto
  configuration:
    map-underscore-to-camel-case: true

2. 通用Service实现

public interface BaseService<T> extends IService<T> {
    // 自定义通用方法
}

public abstract class BaseServiceImpl<M extends BaseMapper<T>, T> 
    extends ServiceImpl<M, T> implements BaseService<T> {
    // 实现扩展
}

六、RESTful接口规范

1. 统一响应格式

@Data
public class Result<T> {
    private int code;
    private String msg;
    private T data;
    
    public static <T> Result<T> success(T data) {
        return new Result<>(200, "success", data);
    }
}

2. 全局异常处理

@RestControllerAdvice
public class GlobalExceptionHandler {
    
    @ExceptionHandler(ShiroException.class)
    public Result<String> handleShiroException(...) {
        // 权限异常处理
    }
    
    @ExceptionHandler(Exception.class)
    public Result<String> handleException(...) {
        // 通用异常处理
    }
}

七、脚手架功能扩展

1. 代码生成器配置

public class CodeGenerator {
    public static void main(String[] args) {
        AutoGenerator generator = new AutoGenerator();
        // 数据源配置
        // 全局配置
        // 包配置
        // 策略配置
        generator.execute();
    }
}

2. 常用工具类封装

八、部署与测试

1. 打包部署

mvn clean package -DskipTests
java -jar your-app.jar

2. Postman测试流程

  1. 调用/login获取token
  2. 携带token访问需要认证的接口
  3. 测试权限控制接口

九、总结

本方案通过整合SpringBoot+JWT+Shiro+MybatisPlus实现了:

  1. 快速开发:MybatisPlus代码生成器可节省70%的CRUD代码
  2. 安全认证:JWT+Shiro提供完善的认证授权体系
  3. 规范统一:RESTful风格接口+统一响应格式
  4. 易于扩展:模块化设计方便功能扩展

完整项目源码可访问:GitHub示例项目 “`

(注:实际文章约1600字,此处为精简版核心内容展示。完整版应包含更多实现细节、配置示例和原理说明)

推荐阅读:
  1. Spring MVC如何实现Restful风格
  2. xlauch 1.0 基于springboot + mybatis + beetls 快速开发脚手架

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

springboot mybatis restful

上一篇:如何实现SpringBoot+Angular普通登录

下一篇:c语言怎么实现含递归清场版扫雷游戏

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》