首页 文章 精选 留言 我的

精选列表

搜索[SpringBoot4],共10000篇文章
优秀的个人博客,低调大师

SpringBoot2.4新特性」jar自动瘦身

自动分析瘦身 Spring Boot 项目最终构建处理 JAR 包大小一直是个诟病,需要把所有依赖包内置最终输出可运行的 jar。 当然可以使用其他的插件扩展 实现依赖 JAR 和 可运行 jar 分离可以参考 slot-maven-plugin, 但此种方法治标不治本并不能减少原有依赖的 JAR 的大小。 Spring Boot 2.4 提供对构建输出 JAR 分析自动瘦身的功能,自动在构建输出可运行 JAR 时删除 empty starter dependencies 效果展示 先来分别基于 Spring Boot 2.4.0 和 Spring Boot 2.3.6 来构建一个可运行的 jar ,再来聊什么是 empty starter 使用 start.spring.io 创建一个空的 Spring Boot 项目,注意不需要引入任何依赖 mvn clean install 构建出来相关可运行 jar 分别解压两个 jar 到两个不同的目录 tar -zxvf demo-2.3.6.jar -C demo-2.3.6/ tar -zxvf demo-2.4.0.jar -C demo-2.4.0/ 统计依赖 jar 个数, 2.3.6 共计 19 个 依赖 jar 而 2.4.0 只有 18 个依赖 jar ,缺少了 spring-boot-starter.jar cd demo-2.3.6/BOOT-INF/lib && ll -h | wc -l 19 cd demo-2.4.0/BOOT-INF/lib && ll -h | wc -l 18 什么是 empty starter 如上文所述,我们在基于 start.spring.io 创建项目的时候 已经默认引入了, 但在 Spring Boot 2.4 中会自动删除此类 empty starter dependencies jar <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> 我们来看一下 spring-boot-stater 有什么特殊性? ① 空 jar 不包含任何代码 ② 有引用其他 jar,只为批量导入其他 jar 所以此类型 jar 在构建成可运行 jar 时并未实际意义,因为批量导入的依赖 jar 都可以被引入。目前 spring boot 提供的 redis、amqp等大部分 starter 均是此类 jar,所以在构建后会自动删除。 自定义 jar 实现自动瘦身 创建 MANIFEST.MF jar 包元信息,添加一行 Spring-Boot-Jar-Type: dependencies-starter 即可 resources ├── META-INF └── MANIFEST.MF 项目推荐: Spring Cloud 、Spring Security OAuth2的RBAC权限管理系统 欢迎关注

优秀的个人博客,低调大师

SpringBoot使用tools-auth进行权限验证

简单快速的在项目中进行权限验证 一、导入依赖 <dependency> <groupId>cn.gjing</groupId> <artifactId>tools-auth</artifactId> <version>1.0.0</version> </dependency> 二、权限注解 该注解使用在API上,用于对用户请求方法时进行身份认证 1、@RequiredPermissions 权限认证,请求的用户需要存在该注解中设置的权限,否则抛出PermissionAuthorizationException 参数 描述 value 需要的权限 2、@RequiredRoles 角色认证,请求的用户需要存在该注解中设置的角色,否则抛出RoleAuthorizationException 参数 描述 value 需要的角色 三、token生成器 主要用来生成Token和解析Token,使用时可以通过@Resource注解进行依赖注入 public class TestController { @Resource private TokenAssistant tokenAssistant; @GetMapping("/token") public void getToken() { Map<String, Object> map = new HashMap<>(16); map.put("user", "张三"); String token = this.tokenAssistant.createToken(map); System.out.println("生成的token:" + map); System.out.println("解析token:" + this.tokenAssistant.parseToken(token)); } } 四、启动类增加注解 在项目启动类增加@EnableAuthorization注解用于开启项目权限校验 五、设置权限认证监听器 通过监听器可以对用户拥有的权限进行提供以及进行自己的认证校验 /** * @author Gjing **/ @Component public class MyListener implements AuthorizationListener { /** * 增加用户的访问权限用于对增加了权限注解的方法进行身份认证,如果返回null会抛出NoAccountException * 这里模拟权限数据,给当前请求的用户增加admin角色和add权限。实际使用时 * 用户权限你可以保存在任何地方 * * @param token 用户Token * @return AuthorizationMetaData */ @Override public AuthorizationMetaData supplyAccess(String token) { SimpleAuthorizationMetaData metaData = new SimpleAuthorizationMetaData(); metaData.addRole("admin"); metaData.addPermission("add"); return metaData; } /** * 权限注解验证通过后会触发该方法,你可以在这里做一些项目中自己的权限认证逻辑 * * @param token 用户Token */ @Override public void authentication(String token) { } /** * 验证全部通过后且方法执行完毕 * * @param request HttpServletRequest * @param method 请求的方法 */ @Override public void authenticationSuccess(HttpServletRequest request, Method method) { System.out.println(); } } 六、额外配置 可以通过这些配置控制拦截路径和过滤路径,以及token存在的请求头名称等等...全部配置如下: snow: auth: # 拦截的路径 path: /** # 排除的路径 filter: # 生成token的加密方式 type: hs256 # token存放的请求头名称 header: Authorization # 加密的盐 salt:

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册