SpringBlade的核心功能模块

SpringBlade的核心功能模块

【免费下载链接】SpringBlade SpringBlade 是一个由商业级项目升级优化而来的SpringCloud分布式微服务架构、SpringBoot单体式微服务架构并存的综合型项目,采用Java17 API重构了业务代码,完全遵循阿里巴巴编码规范。采用Spring Boot 3.2 、Spring Cloud 2023 、Mybatis 等核心技术,同时提供基于React和Vue的两个前端框架用于快速搭建企业级的SaaS多租户微服务平台。 【免费下载链接】SpringBlade 项目地址: https://gitcode.com/bladex/SpringBlade

SpringBlade是一个基于Spring Cloud的微服务开发框架,包含多个核心功能模块,如授权服务模块(blade-auth)、常用工具封装模块(blade-common)、网关模块(blade-gateway)和运维中心模块(blade-ops)。这些模块共同构成了SpringBlade的强大功能体系,为开发者提供了全面的微服务解决方案。

授权服务模块(blade-auth)的功能与实现

SpringBlade的授权服务模块(blade-auth)是整个系统的核心安全组件,负责用户认证、授权、令牌管理以及第三方登录集成等功能。以下将从功能模块、核心实现、代码示例和流程图等方面详细介绍该模块的设计与实现。

功能模块概述

blade-auth模块主要包含以下功能:

  1. 用户认证:支持多种认证方式,包括密码登录、验证码登录、社交登录等。
  2. 令牌管理:生成、刷新和撤销JWT令牌。
  3. 第三方登录集成:支持微信、QQ等社交平台的授权登录。
  4. 安全控制:IP锁定、密码加密、登录失败处理等安全机制。

核心实现

1. 认证控制器

AuthControllerSocialController是认证功能的核心控制器,分别处理本地认证和第三方社交登录请求。

@RestController
public class AuthController {
    // 处理本地认证逻辑
}

@RestController
public class SocialController {
    @Operation(summary = "授权完毕跳转")
    @RequestMapping("/oauth/render/{source}")
    public void renderAuth(@PathVariable("source") String source, HttpServletResponse response) {
        // 跳转到第三方授权页面
    }

    @Operation(summary = "获取认证信息")
    @RequestMapping("/oauth/callback/{source}")
    public Object login(@PathVariable("source") String source, AuthCallback callback) {
        // 处理第三方回调
    }
}
2. 令牌生成与管理

TokenUtil类负责令牌的生成、解密和验证,同时支持密码加密和账户锁定功能。

public class TokenUtil {
    public static AuthInfo createAuthInfo(UserInfo userInfo) {
        // 生成JWT令牌
    }

    public static String decryptPassword(String rawPassword, String publicKey, String secretKey) {
        // 密码解密
    }
}
3. 认证方式扩展

通过ITokenGranter接口及其实现类,支持多种认证方式的动态扩展。

mermaid

4. 依赖配置

pom.xml中定义了模块的依赖关系,包括核心安全组件、社交登录支持和数据库连接等。

<dependencies>
    <dependency>
        <groupId>org.springblade</groupId>
        <artifactId>blade-core-secure</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springblade</groupId>
        <artifactId>blade-starter-social</artifactId>
    </dependency>
</dependencies>

代码示例与流程

令牌生成流程

以下是一个令牌生成的简化流程:

mermaid

社交登录流程

社交登录的流程如下:

  1. 用户请求第三方授权页面。
  2. 第三方平台回调SocialController
  3. 生成令牌并返回用户信息。

mermaid

总结

blade-auth模块通过灵活的认证方式和强大的安全机制,为SpringBlade系统提供了可靠的身份验证和授权支持。其模块化设计和扩展性使其能够轻松适应不同的业务需求。

常用工具封装模块(blade-common)的作用

SpringBlade的blade-common模块是整个平台的核心工具封装模块,旨在为其他模块提供通用的工具类、配置类和基础功能支持。通过高度封装和复用,开发者可以更专注于业务逻辑的实现,而无需重复编写基础功能代码。以下将从多个维度详细介绍blade-common模块的作用。

核心功能封装

blade-common模块提供了丰富的工具类和配置类,涵盖以下核心功能:

  1. 工具类封装

    • PropsUtil:用于操作Properties文件,支持动态设置和读取配置项。
    • CommonUtil:提供通用的工具方法,如字符串处理、日期转换等。
    • CacheNames:定义缓存名称常量,便于统一管理缓存键。
  2. 配置类支持

    • BladeCommonConfiguration:作为模块的配置入口,定义了默认的Spring Bean和配置项。
    • LauncherServiceImpl:实现了服务的启动逻辑,支持自定义启动参数和配置。
  3. 常量定义

    • CommonConstant:定义了全局通用的常量,如HTTP状态码、字符编码等。
    • LauncherConstant:定义了服务启动相关的常量,如环境变量、配置文件路径等。

代码示例

以下是一些典型工具类的使用示例:

1. PropsUtil 示例
Properties props = new Properties();
PropsUtil.setProperty(props, "spring.application.name", "blade-demo");
System.out.println(props.getProperty("spring.application.name")); // 输出: blade-demo
2. CommonUtil 示例
String dateStr = CommonUtil.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss");
System.out.println(dateStr); // 输出当前时间,如: 2025-08-18 23:02:46

模块依赖关系

blade-common模块的依赖关系如下: mermaid

功能流程图

以下展示了blade-common模块在服务启动中的作用: mermaid

总结

blade-common模块通过封装通用工具类和配置,显著提升了代码复用性和开发效率。其设计遵循了SpringBoot的最佳实践,确保了模块的灵活性和扩展性。开发者可以基于此模块快速构建业务逻辑,而无需关注底层实现细节。

网关模块(blade-gateway)的设计与配置

SpringBlade的网关模块(blade-gateway)是整个微服务架构的核心组件之一,负责请求路由、负载均衡、安全认证等功能。它基于Spring Cloud Gateway构建,支持动态路由配置和多种过滤器链,确保系统的高可用性和安全性。以下将详细介绍其设计与配置。

核心功能设计

  1. 动态路由与负载均衡
    网关通过DiscoveryClientRouteDefinitionLocator实现动态路由,结合Spring Cloud LoadBalancer完成服务发现与负载均衡。路由规则支持动态更新,无需重启服务。

  2. 安全认证
    集成JWT(JSON Web Token)机制,通过AuthFilterJwtUtil类实现请求的鉴权与授权。JWT的加密与解密由JwtCrypto类处理,确保数据传输的安全性。

  3. 过滤器链
    网关内置多种过滤器,包括:

    • RequestFilter:处理请求头与跨域问题。
    • AuthFilter:验证请求的合法性。
    • GatewayFilter:实现自定义路由逻辑。
  4. 监控与限流
    结合Spring Boot AdminSentinel,实现对网关请求的实时监控与流量控制。

关键配置解析

1. 动态路由配置

动态路由的核心配置位于ReactiveDiscoveryConfiguration类中,通过DiscoveryClientRouteDefinitionLocator实现服务发现与路由绑定:

@Bean
@ConditionalOnProperty(name = "spring.cloud.gateway.server.webflux.discovery.locator.enabled")
public DiscoverClientRouteServiceConvert discoverClientRouteServiceConvert(
    DiscoveryClientRouteDefinitionLocator discoveryClient,
    Knife4jGatewayProperties knife4jGatewayProperties
) {
    return new DiscoverClientRouteServiceConvert(discoveryClient, knife4jGatewayProperties);
}
2. JWT认证配置

JWT的密钥和有效期通过JwtProperties类配置,支持动态加载:

public class JwtProperties {
    private String signKey;
    private Long expire;

    // Getter & Setter
}
3. 过滤器链配置

过滤器链的优先级和逻辑由RouterFunctionConfiguration类定义:

@Bean
public WebFilter gatewayFilter(RequestProperties requestProperties) {
    return new GatewayFilter(requestProperties);
}

依赖管理

网关模块的依赖通过pom.xml文件管理,核心依赖包括:

  • spring-cloud-starter-gateway-server-webflux:提供网关核心功能。
  • spring-boot-starter-data-redis-reactive:支持Redis缓存。
  • spring-cloud-starter-alibaba-sentinel:实现限流与熔断。
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway-server-webflux</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

流程图示例

以下为网关请求处理的流程图:

mermaid

总结

通过动态路由、安全认证和过滤器链的设计,blade-gateway模块为SpringBlade提供了高效、安全的请求转发能力。开发者可根据实际需求扩展其功能,例如集成OAuth2或自定义限流策略。

运维中心模块(blade-ops)的组成与功能

SpringBlade的运维中心模块(blade-ops)是一个功能强大的微服务组件集合,专注于提供系统运维、开发支持、资源管理等功能。它由多个子模块组成,每个子模块都有其独特的职责和功能。以下是blade-ops模块的详细组成与功能分析:


1. blade-admin

blade-admin模块是运维中心的核心后台管理模块,提供系统配置、用户管理、权限控制等功能。它基于Spring Cloud构建,支持动态路由和微服务治理。

功能特点:
  • 系统配置管理:支持动态配置加载和更新。
  • 用户权限控制:基于角色的权限管理(RBAC)。
  • 微服务监控:集成Spring Boot Admin,实时监控服务状态。
代码示例:
@RestController
@RequestMapping("/admin")
public class AdminController {
    @GetMapping("/config")
    public R<Config> getConfig() {
        return R.data(configService.getConfig());
    }
}

2. blade-develop

blade-develop模块是一个代码生成工具,支持快速生成CRUD代码、API接口和前端页面。它极大地提升了开发效率,减少了重复劳动。

功能特点:
  • 代码生成:支持生成Controller、Service、Mapper等代码。
  • 数据源管理:支持多数据源配置和动态切换。
  • 模板定制:可自定义代码生成模板。
代码示例:
@Service
public class CodeServiceImpl implements ICodeService {
    @Override
    public void genCode(String ids, String system) {
        // 代码生成逻辑
    }
}
流程图:

mermaid


3. blade-report

blade-report模块是一个报表生成工具,支持动态数据源配置和多种报表格式导出(如PDF、Excel)。

功能特点:
  • 动态数据源:支持从不同数据源提取数据。
  • 报表模板:预置多种报表模板,支持自定义。
  • 导出功能:支持PDF、Excel等格式导出。
代码示例:
@RestController
@RequestMapping("/report")
public class ReportController {
    @PostMapping("/export")
    public void exportReport(HttpServletResponse response) {
        reportService.export(response);
    }
}

4. blade-resource

blade-resource模块是一个资源管理工具,支持文件上传、下载、存储桶管理等操作。它集成了多种存储服务(如阿里云OSS、MinIO)。

功能特点:
  • 文件管理:支持文件上传、下载、删除。
  • 存储桶管理:支持创建、删除存储桶。
  • 多存储服务:支持阿里云OSS、MinIO等。
代码示例:
@RestController
@RequestMapping("/oss")
public class OssEndpoint {
    @PostMapping("/upload")
    public R<String> uploadFile(MultipartFile file) {
        return R.data(ossService.upload(file));
    }
}

5. blade-seata-order & blade-seata-storage

这两个模块是分布式事务的示例实现,基于Seata框架,展示了订单和库存服务的分布式事务处理。

功能特点:
  • 分布式事务:支持AT模式的事务管理。
  • 服务降级:集成Sentinel,支持服务熔断和降级。
  • 示例场景:模拟订单创建和库存扣减。
代码示例:
@Service
public class OrderServiceImpl implements IOrderService {
    @Override
    @GlobalTransactional
    public void createOrder(OrderDTO orderDTO) {
        // 订单创建逻辑
    }
}
时序图:

mermaid


6. 模块依赖关系

blade-ops模块通过Maven的pom.xml文件管理子模块的依赖关系,确保各模块之间的协同工作。

依赖配置:
<modules>
    <module>blade-admin</module>
    <module>blade-develop</module>
    <module>blade-report</module>
    <module>blade-resource</module>
    <module>blade-seata-order</module>
    <module>blade-seata-storage</module>
</modules>

通过以上分析可以看出,blade-ops模块是SpringBlade平台中不可或缺的一部分,为开发者提供了强大的运维和开发支持功能。

【免费下载链接】SpringBlade SpringBlade 是一个由商业级项目升级优化而来的SpringCloud分布式微服务架构、SpringBoot单体式微服务架构并存的综合型项目,采用Java17 API重构了业务代码,完全遵循阿里巴巴编码规范。采用Spring Boot 3.2 、Spring Cloud 2023 、Mybatis 等核心技术,同时提供基于React和Vue的两个前端框架用于快速搭建企业级的SaaS多租户微服务平台。 【免费下载链接】SpringBlade 项目地址: https://gitcode.com/bladex/SpringBlade

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值