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异常相关推荐

  1. springboot 在线程中注入bean,解决注入bean为null的问题

    解决问题: 在我们开发过程中总会遇到比如在线程中需要代用service或者mapper等读取数据库,或者某些自动注入bean失效的情况 问题分析: 在线程中因为线程是安全的,所以是无法自动注入bean ...

  2. kotlin Bean加载失败lateinit property has not been initialized

    Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creat ...

  3. SpringBoot使用@Transactional的类手动注入失败

    一.手动注入失败解决方案     修改SpringBoot的默认动态代理模式,默认的是Java的动态代理模式,需要修改为CGLIB动态代理模式:     在application.properties ...

  4. Spring中注解注入bean和配置文件注入bean

    注解的方式确实比手动写xml文件注入要方便快捷很多,省去了很多不必要的时间去写xml文件 按以往要注入bean的时候,需要去配置一个xml,当然也可以直接扫描包体,用xml注入bean有以下方法: 1 ...

  5. 在kotlin companion object中读取Bean,注入Bean对象

    在kotlin companion object中读取Bean,注入Bean对象 在使用kotlin时,或多或少地会使用到一些公共组件,如 http. mongo. redis相关的组件.   使用组 ...

  6. Servlet自动注入Spring容器中的Bean解决方法

    Servlet自动注入Spring容器中的Bean解决方法 参考文章: (1)Servlet自动注入Spring容器中的Bean解决方法 (2)https://www.cnblogs.com/jank ...

  7. java filter注入,Spring-boot中Filter注入bean

    Spring-boot中Filter注入bean 在spring中使用Filter的方式不用再多说,但是通常情况下我们在使用filter中都可能会注入部分配置的类或者部分具有特殊功能的业务类. 在这种 ...

  8. 解决SpringBoot使用Quartz无法注入Bean的问题

    2019独角兽企业重金招聘Python工程师标准>>> 依赖 <dependency> <groupId>org.quartz-scheduler</g ...

  9. java手工注入bean_java相关:Spring中如何动态注入Bean实例教程

    java相关:Spring中如何动态注入Bean实例教程 发布于 2020-3-8| 复制链接 摘记: 前言在Spring中提供了非常多的方式注入实例,但是由于在初始化顺序的不同,基于标注的注入方式, ...

最新文章

  1. JSP中页面向Action传递参数的几种方式
  2. Socket_send函数和recv函数详解
  3. java调用sql返回list_Spring JdbcTemplate实现有java.sql.ResultSet结果集返回的存储过程调用 | 学步园...
  4. MQTT 连接 阿里云物联网十六进制数据分析笔记
  5. 温升测试总结setllom解胶剂
  6. c++用一级运算比较大小_Python 学习笔记:Python 中的数字和数字型运算
  7. 微信电话本的未来在农村
  8. Java记录 -89- java.lang.Class
  9. 2019最新好听DJ舞曲精选(51-70)【WAV/百度】
  10. 电力巡检解决方案解决方案
  11. OpenStack详解、排错、经验总结
  12. iOS的崩溃率高于Android?来自听云的数据告诉你真相
  13. python tkinter messagebox 自动关闭_Python实现定时自动关闭的tkinter窗口方法
  14. 传统备份 VS 云备份?
  15. JAVA 数组降序排列思路
  16. 我的世界丛林风景Mac动态壁纸
  17. iOS开发 支付之银联支付集成
  18. 嵌入式方面名词术语总结
  19. 微信公众号计算机编程,微信公众号群发文章怎么添加小程序?-电脑教程
  20. android 防止屏幕误碰,小米11带来硬件防误触解决方案,彻底解决曲面屏误触问题...

热门文章

  1. 如果你没用过maven的install,你应该了解一下!maven中的install功能及用法。
  2. 伍六七带你学算法 入门篇-卡牌分组
  3. Go 学习笔记(59)— Go 第三方库之 etcd/clientv3 封装为方法使用(建立连接、设置key-value、获取key-value、获取带前缀的key-value)
  4. 判断某数组是不是二叉树的前序遍历序列 python递归
  5. 【K8S实践】关于Kubernetes Dashboard的实践学习
  6. 数学上各种空间概念的关系图
  7. Map再整理,从底层源码探究HashMap
  8. LeetCode简单题之汇总区间
  9. Golang的交叉编译问题
  10. TVM/Relay 的 PartitionGraph()(mod) 函数讨论整理