hutool SpringUtil.getBean() NullPointerException
出现这个问题因为启动的时候没有将SpringUtil注册到spring的容器
解决方案:
1.启动类中指定basePackages扫描SpringUtil所在的包
@SpringBootApplication(scanBasePackages = {"com.hy.image.mp.file","cn.hutool.extra.spring"})
scanBasePackages指定扫描hutool包后,spring就只扫描指定包,不会扫描其他的包(不指定会有一个默认扫描策略),所以还需要扫描当前服务的包,否则@RestController@Service@FeignClient@Component等等代码中使用的这些注解没啥用了,虽然启动过程中正常,使用过程中就会有问题
感觉不够美观,实际上我只需要扫描hutool,但是还要扫描项目包,所以有了第二种方案
2.启动类构造注册到spring容器
@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients
public class CloudStorageServiceApplication {// 由于hutool的SpringUtil没有注册到Spring容器里,后续代码中使用SpringUtil.getBean()出现空指针异常, 启动前通过构造器注册到容器public CloudStorageServiceApplication(SpringUtil springUtil) {}public static void main(String[] args) {SpringApplication.run(CloudStorageServiceApplication.class, args);}
}
第二种方案就是在启动列的构造器方法中加入SpringUtil,spring启动的时候会优先去把SpringUtil扫描注册到容器,也可以解决问题
感觉还是不美观,启动类构造器都搞上了,所以有了第三种方案
3.SpringApplication.run()传入SpringUtil
@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients
public class CloudStorageServiceApplication {public static void main(String[] args) {SpringApplication.run(new Class[]{CloudStorageServiceApplication.class, SpringUtil.class}, args);}
}
SpringApplication.run()正常是只需要传入当前启动类的class,具体做的事情(个人理解:启动时去做各种主准备工作,比如扫描到@SpringBootApplication注解那么就应该会创建tomcat容器等等 ps:我也不是很清楚自行百度吧)总之也是会去扫描注解的也会做一些将对象注册到容器的事情,发现run()方法可以传入多个class类,再去百度了下确实可以传入多个class,那我是不是可以传入SpringUtil.class,经过测试没有问题,于是就完美的解决了这个问题 完美解决问题
hutool SpringUtil.getBean() NullPointerException相关推荐
- openOffice word转pdf,pdf转图片优化版
之前写了一个版本的,不过代码繁琐而且不好用,效率有些问题.尤其pdf转图片速度太慢.下面是优化版本的代码. spriing_boot 版本信息:2.0.1.RELEASE 1.配置信息: packag ...
- 视频显示当前帧附加信息(通过vtt字幕方式)
vtt 字幕文件 WEBVTT1604651411941 00:00:01.000 --> 00:00:02.000 {"position":"pos:0" ...
- Quartz入门教程
本文参考文章编写 Quartz 官网 Quartz 是 OpenSymphony 开源组织在 Job Scheduling 领域又一个开源项目,是完全由 Java 开发的一个开源任务日程管理系统,&q ...
- 基于quartz实现定时任务管理系统
基于quartz实现定时任务管理系统 背景 说起定时任务框架,首先想到的是Quartz.这是定时任务的老牌框架了,它的优缺点都很明显.借助PowerJob 的readme文档的内容简单带过一下这部分. ...
- EasyExcel生成带下拉列表或二级级联列表的Excel模版+自定义校验导入数据(附仓库)
EasyExcel生成带下拉列表或二级级联列表的Excel模版+自定义校验导入数据(附仓库) 目录 EasyExcel生成带下拉列表或二级级联列表的Excel模版+自定义校验导入数据(附仓库) 仓库 ...
- tio对接天眼tcp协议记录
依赖 <dependency><groupId>org.t-io</groupId><artifactId>tio-core</artifactI ...
- (十六)admin-boot项目之文件存储上传与下载minio
(十六)文件存储上传与下载 项目地址:https://gitee.com/springzb/admin-boot 如果觉得不错,给个 star 简介: 这是一个基础的企业级基础后端脚手架项目,主要由s ...
- unity3d游戏网络服务器和客户端
想做网络游戏的小伙伴肯定找过 mirro ,Photon的工具 ,但是不是很好用,想自定义强一点,连外网服务器 资料很少或者没有. 我直接用java的netty做的udp服务器就实现了个简单的 实现了 ...
- java流水号英文和日期加上流水号拼接
效果:英文和日期加上流水号拼接 一.步骤: 1.新建常量类**Constants 2.设置常量为编号开头 /*** 8**常量类*/ public class DjkConstants {/*** 编 ...
- 阿里云人脸识别新版SDK对接(java)
我自认为不想做curd程序员,但是免不了的会对数据基本原子操作进行处理,项目开发过程中的增删改查少不了的,但是又不甘心于curd下去,所以想要在掌握现有知识的基础上,甚至逼迫自己去学习一些东西,去接触 ...
最新文章
- 剑指offer:面试题10- I. 斐波那契数列
- IO设计模式:Reactor和Proactor对比
- git操作之版本控制
- python命令行进入帮助模式_python命令行模式直接查看帮助
- SAP CRM one order三层内存模型
- 3. 设计模式之创建模式
- C算法编程题(七)购物
- 系统的延时与定时任务
- delta3d中,读取自己的xml配置文件。
- android 排队系统设计,基于android银行排队叫号系统毕业设计论文+设计源码+答辩PPT...
- laydate点击输入框闪一下不见了_解决layui laydate 时间控件一闪而过的问题
- 计算机设备管理器驱动,设备管理器安装驱动程序的详细教程
- 全民健身下的体育消费,是怎么升级的?
- 使用Free Spire.Doc for Java 处理word文档换行
- python数据分析(六)—数据清洗2
- 【面试】上海 java开发工程师/自动化测试开发工程师 面试题
- CentOS全版本 阿里云下载详细教程
- windows添加右键菜单
- 图灵奖得主Geoffrey Hinton最新研究:利用神经网络对有关节三维模型进行估计的方法NASA
- 【数据结构】链表的增删改查| 组件化封装
热门文章
- The Apache Tomcat Native library which allows using OpenSSL was not found on the java.library.path
- ReactNative 公共脱敏处理js 包括银行卡 身份证号 手机号企业名称 营业执照 邮箱号码 等等
- 更加清晰的报名要点讲解视频(附图文介绍)
- Python吴恩达深度学习作业15 -- YOLO原理及应用(自动驾驶——汽车检测)
- mfc treectrl设置背景透明_微信透明头像怎么弄 专用透明头像图片更换设置教程闽南网...
- HDOJ 2504 又见GCD (水题)
- flutter dart 中dynamic var object的区别
- STM32单片机实现二维码显示
- scala特征加工中的报错记录和调试
- win10装win7装win7