Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常
kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized
注解类加载延迟导致的异常
解决方法一:工厂模式
建一个工厂类,如UserServiceFactory,使用该方法
- java版:
public abstract class UserServiceFactory {private static UserService userService = new UserServiceMemoryImpl();public static UserService getUserService() {return userService;}
}
- kotlin版:
abstract class ServiceFactory {companion object {private val loginService: LoginService = UserServiceMemoryImpl();open fun getUserService(): LoginService {return loginService}}
}
解决方法二:手动注入Spring上下文,获取bean
实现ApplicationContextAware接口
创建一个实体类并实现
ApplicationContextAware
接口,重写接口内的setApplicationContext
方法来完成获取ApplicationContext
实例的方法
- java版:
private ApplicationContext applicationContext;@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {this.applicationContext = applicationContext;
}// 使用
Person person = getApplicationContext().getBean(Person.class)
- kotlin版:
private lateinit var ctx: ApplicationContext
override fun setApplicationContext(applicationContext: ApplicationContext) {this.ctx = applicationContext
}// 使用
val person = ctx.getBean(Person::class.java)
以上!
Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常相关推荐
- springboot 在线程中注入bean,解决注入bean为null的问题
解决问题: 在我们开发过程中总会遇到比如在线程中需要代用service或者mapper等读取数据库,或者某些自动注入bean失效的情况 问题分析: 在线程中因为线程是安全的,所以是无法自动注入bean ...
- kotlin Bean加载失败lateinit property has not been initialized
Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creat ...
- SpringBoot使用@Transactional的类手动注入失败
一.手动注入失败解决方案 修改SpringBoot的默认动态代理模式,默认的是Java的动态代理模式,需要修改为CGLIB动态代理模式: 在application.properties ...
- Spring中注解注入bean和配置文件注入bean
注解的方式确实比手动写xml文件注入要方便快捷很多,省去了很多不必要的时间去写xml文件 按以往要注入bean的时候,需要去配置一个xml,当然也可以直接扫描包体,用xml注入bean有以下方法: 1 ...
- 在kotlin companion object中读取Bean,注入Bean对象
在kotlin companion object中读取Bean,注入Bean对象 在使用kotlin时,或多或少地会使用到一些公共组件,如 http. mongo. redis相关的组件. 使用组 ...
- Servlet自动注入Spring容器中的Bean解决方法
Servlet自动注入Spring容器中的Bean解决方法 参考文章: (1)Servlet自动注入Spring容器中的Bean解决方法 (2)https://www.cnblogs.com/jank ...
- java filter注入,Spring-boot中Filter注入bean
Spring-boot中Filter注入bean 在spring中使用Filter的方式不用再多说,但是通常情况下我们在使用filter中都可能会注入部分配置的类或者部分具有特殊功能的业务类. 在这种 ...
- 解决SpringBoot使用Quartz无法注入Bean的问题
2019独角兽企业重金招聘Python工程师标准>>> 依赖 <dependency> <groupId>org.quartz-scheduler</g ...
- java手工注入bean_java相关:Spring中如何动态注入Bean实例教程
java相关:Spring中如何动态注入Bean实例教程 发布于 2020-3-8| 复制链接 摘记: 前言在Spring中提供了非常多的方式注入实例,但是由于在初始化顺序的不同,基于标注的注入方式, ...
最新文章
- JSP中页面向Action传递参数的几种方式
- Socket_send函数和recv函数详解
- java调用sql返回list_Spring JdbcTemplate实现有java.sql.ResultSet结果集返回的存储过程调用 | 学步园...
- MQTT 连接 阿里云物联网十六进制数据分析笔记
- 温升测试总结setllom解胶剂
- c++用一级运算比较大小_Python 学习笔记:Python 中的数字和数字型运算
- 微信电话本的未来在农村
- Java记录 -89- java.lang.Class
- 2019最新好听DJ舞曲精选(51-70)【WAV/百度】
- 电力巡检解决方案解决方案
- OpenStack详解、排错、经验总结
- iOS的崩溃率高于Android?来自听云的数据告诉你真相
- python tkinter messagebox 自动关闭_Python实现定时自动关闭的tkinter窗口方法
- 传统备份 VS 云备份?
- JAVA 数组降序排列思路
- 我的世界丛林风景Mac动态壁纸
- iOS开发 支付之银联支付集成
- 嵌入式方面名词术语总结
- 微信公众号计算机编程,微信公众号群发文章怎么添加小程序?-电脑教程
- android 防止屏幕误碰,小米11带来硬件防误触解决方案,彻底解决曲面屏误触问题...
热门文章
- 如果你没用过maven的install,你应该了解一下!maven中的install功能及用法。
- 伍六七带你学算法 入门篇-卡牌分组
- Go 学习笔记(59)— Go 第三方库之 etcd/clientv3 封装为方法使用(建立连接、设置key-value、获取key-value、获取带前缀的key-value)
- 判断某数组是不是二叉树的前序遍历序列 python递归
- 【K8S实践】关于Kubernetes Dashboard的实践学习
- 数学上各种空间概念的关系图
- Map再整理,从底层源码探究HashMap
- LeetCode简单题之汇总区间
- Golang的交叉编译问题
- TVM/Relay 的 PartitionGraph()(mod) 函数讨论整理