springboot普通类调用bean
问题
- @Autowired @Bean注入但是空指针异常
- 测试类中能获取,但普通类中空指针
- 需要在普通类中调用bean
Bean结构
痛点
这样的结构可以直接在@Controller层 @Service层 @Mapper层 @SpringBootApplication启动类中 @SpringBootTest测试类中
直接通过
@Autowired
private OSSphotoConfig osspc;
来获取bean的实例,并且可以正常调用,但是这些调用方的类都不是普通类,有时需要在普通类中调用bean,通过@Autowired @Bean等方法注入都会失效,运行会报空指针异常,以下使用工具类解决这个问题
工具类实现ApplicationContextAware接口
任意找一个包下创建一个工具类,这个工具类可以通过反射获取bean,不需要通过@Autowired或@Bean即可在普通类中使用bean
并且这个工具类是通用的
@Componentpublic class SpringContexUtil implements ApplicationContextAware {private static ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext context) throws BeansException {applicationContext = context;}//静态加载applicationContextpublic static ApplicationContext getApplicationContext() {return applicationContext;}//通过反射获取Beanpublic static <T> T getBean(Class<T> requiredType){return getApplicationContext().getBean(requiredType);}//通过id名获取beanpublic static <T> T getBean(String name){return (T) getApplicationContext().getBean(name);}}
在普通类中调用接口的静态方法获取bean
用这种方法就不会报错了
引用一句话------“如果说BeanFactory是Spring的心脏,那么ApplicationContext就是完整的身躯了。ApplicationContext由BeanFactory派生而来,提供了更多面向实际应用的功能。”
springboot普通类调用bean相关推荐
- 17、Spring Boot普通类调用bean【从零开始学Spring Boot】
转载:http://blog.csdn.net/linxingliang/article/details/52013017 我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个 ...
- java懒加载注解_在springboot中实现个别bean懒加载的操作
懒加载---就是我们在spring容器启动的是先不把所有的bean都加载到spring的容器中去,而是在当需要用的时候,才把这个对象实例化到容器中. @Lazy 在需要懒加载的bean上加上@Lazy ...
- spring-boot 引入xml注入bean
2019独角兽企业重金招聘Python工程师标准>>> spring-boot 引入xml注入bean 配置 public class TestServiceImpl impleme ...
- java filter注入,Spring-boot中Filter注入bean
Spring-boot中Filter注入bean 在spring中使用Filter的方式不用再多说,但是通常情况下我们在使用filter中都可能会注入部分配置的类或者部分具有特殊功能的业务类. 在这种 ...
- springboot webservice接口调用_springboot远程调用dubbo服务接口
1.首先idea新建一个springboot项目,这里简单介绍下: 2.在springboot启动类上加入注解 @ImportResource(locations = {"classpath ...
- java spring配置类_spring 配置 Java配置类装配bean
https://www.cnblogs.com/chenbenbuyi/p/8457700.html 自动化装配的确有很大的便利性,但是却并不能适用在所有的应用场景,比如需要装配的组件类不是由自己的应 ...
- springBoot启动类报错
关于SpringBoot启动类报错的问题解决: APPLICATION FAILED TO START Description: Field elasticsearchRestTemplate in ...
- SpringBoot:yaml配置注入bean
SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的. 有分成application.properties和application.yml两种结构,这两种结构: application ...
- 如何调用封装工具类调用网上接口查询工作日
如何调用封装工具类调用网上接口查询工作日 这里的编辑器是STS,用的springboot集成环境: 先引进pom.xml依赖包 <?xml version="1.0" enc ...
最新文章
- 【CSS3教程】CSS3基础常用技巧实例集合
- python源代码不需要编译成什么-编译 Python 源代码
- alert时java还时js_js 加alert后才能执行方法
- 创意夜晚行驶迷路网站404页面源码
- JavaScript:函数
- Android近场通信---高级NFC(二)
- 赠书 | 数据库怎么选择?终于有人讲明白了
- Bert模型进行文本分类
- mysql 命令查看sql文件大小_用SQL命令查看Mysql数据库大小
- 计算机图像处理发展前景,数字图像处理发展前景
- uni-app 连接蓝牙打印机
- 统计bed文件下的reads数目和GC含量
- 百度Clouda的初步探索
- 室内定位蓝牙信标安装规划问题
- 游戏中要遵守道德规范吗?谈《荒野大镖客2》道德体验设计的意义
- 移动通信的主要测量指标及注意事项(转)
- 我写的阿拉伯数字转中文大写的一个方法
- OpenCV路在何方
- python办公笔记分享
- 洛谷 p1010 幂次方 python实现