专栏名称: 芋道源码
纯 Java 源码分享公众号,目前有「Dubbo」「SpringCloud」「Java 并发」「RocketMQ」「Sharding-JDBC」「MyCAT」「Elastic-Job」「SkyWalking」「Spring」等等
目录
相关文章推荐
芋道源码  ·  一款颜值超高,功能还特别强大的SSH工具 ·  9 小时前  
芋道源码  ·  提醒一下Java后端面试肚子里没墨水的人 ·  9 小时前  
java1234  ·  这招聘环境,绷不住了。。 ·  10 小时前  
java1234  ·  这招聘环境,绷不住了。。 ·  10 小时前  
芋道源码  ·  5.6K ... ·  昨天  
51好读  ›  专栏  ›  芋道源码

SpringBoot Starter,自定义全局加解密组件

芋道源码  · 公众号  · Java  · 2025-04-13 16:57

主要观点总结

本文介绍了一个可能对你有用的社群和开源项目,包括一对一交流、面试小册、简历优化等。还介绍了一个自定义SpringBoot Starter(全局加解密)的开发流程,包括注入SpringBoot的方式、demo演示、测试、优化等。

关键观点总结

关键观点1: 社群介绍

这是一个可能对你有用的社群,提供一对一交流、面试小册、简历优化等服务。

关键观点2: 开源项目介绍

介绍了一个开源项目,包括前端管理后台、微信小程序、后端支持单体和微服务架构等功能。还提供了部分视频教程和项目的GitHub地址。

关键观点3: 自定义SpringBoot Starter(全局加解密)的开发流程

介绍如何自定义SpringBoot Starter,通过配置文件初始化,让配置类注解@ComponentScan扫描到的Bean等注入到SpringBoot中。通过自定义注解和RequestBodyAdvice/ResponseBodyAdvice组合拦截请求,在BeforBodyRead/beforeBodyWrite中进行数据的前置处理,实现全局加解密功能。

关键观点4: 项目处理流程图

核心代码包括进入RequestBodyDecryptAdvice的beforeBodyRead操作和进入ResponseBodyEncryptAdvice的beforeBodyWrite操作。采用SM2加密方式,通过@PostConstruct修饰方法,保证SmUtil.sm2()只会被调用一次。

关键观点5: 测试与优化

测试复用了之前的测试项目,引用打包的maven依赖。优化后的项目结构包括增加配置类,用于绑定外部配置到Java对象的机制。可以重写Starter默认的加解密方式。


正文

请到「今天看啥」查看全文


https://gitee.com/xbhog/encry-adecry-spring-boot-starter

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

了解SpringBoot Starter相关概念以及开发流程

SpringBoot Starter

SpringBoot Starter作用将一组相关的依赖打包,简化项目的配置和初始化过程,通过特定的Starter开发者可以快速的实现特定功能模块的开发和扩展。

自定义Starter能够促进团队内部资源的复用,保持项目间的一致性,提升协作效率并且有助于构建稳定、高效的大型系统。

开发流程

注入SpringBoot的方式

在刚开始开发Starter的时候,首先考虑的是怎么能注入到SpringBoot中?

这部分涉及到部分SpringBoot的自动装配原理,不太清楚的朋友可以补习下;

注入SpringBoot需要配置文件,在项目中的resources资源目录中创建该目录和文件。

demo-spring-boot-starter
└── src
    └── main
        └── java
            └── com.xbhog
                ├── DemoBean.java
                └── DemoBeanConfig.java
        └── resources
                └── META-INF
                    └── spring.factories

在spring.factories中我们指定一下自动装配的配置类,格式如下:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.xbhog.DemoBeanConfig
@Slf4j
@Configuration
public class DemoBeanConfig {

    @Bean
    public DemoBean getDemo() {
        log.info("已经触发了配置类,正在初始化DemoBean...");
        return new DemoBean();
    }
}
@Slf4j
public class DemoBean {
    public void getDemo(){
      log.info("方法调用成功");
    }
}

这样就可以将设置的包扫描路径下的相关操作打包到SpringBoot 中。

SpringBoot主类启动器:初始化的操作,感兴趣的朋友可以研究下

完成后,我们可以打包该项目,然后在测试工程红进行Maven的引入、测试。

测试

新建Spring 测试工程,引入依赖:


    com.xbhog
    demo-spring-boot-starter
    1.0

@RestController
public class BasicController implements ApplicationContextAware {
    private ApplicationContext applicationContext;
    
    /**两种引入方式都可以
    @Autowired
    private DemoBean demoBean;*/


    @GetMapping("/configTest")
    public void configTest() {
        DemoBean demoBean = applicationContext.getBean(DemoBean.class);
        demoBean.getDemo();
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }
}

请求地址后,可以观察控制台,如下日志表示SpringBoot Starter可以使用了。

到此,一个简单的Starter开发完成了,后续可以围绕工程,根据需求和业务,对通用功能(接口操作日志、异常、加解密、白名单等)进行封装,最后打到Maven仓库中进行使用。







请到「今天看啥」查看全文