springboot 如何解决static调用service为null

作者:离别又见离别 时间:2022-09-05 05:30:03 

springboot static调用service为null

@PostConstruct注解好多人以为是Spring提供的。其实是Java自己的注解。

Java中该注解的说明:

@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。

通常我们会是在Spring框架中使用到@PostConstruct注解 该注解的方法在整个Bean初始化中的执行顺序:

Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释的方法)

实战:

在静态方法中调用依赖注入的Bean中的方法。


@Component
public class LeaveCode {
   @Autowired
   private IPlaLeaveApplyService plaLeaveApplyService;
   public static LeaveCode leaveCode;
   /**
    * 解决 static方法调用  注入的service为null
    */
   @PostConstruct
   public void init(){
       leaveCode = this;
       leaveCode.plaLeaveApplyService = this.plaLeaveApplyService;
   }
}

SpringBoot 静态类引入service 空指针/NULL

Spring注入service后,正常情况下非静态方法是可以正常使用注册的service的,当时用静态类引用的时候,静态类static方法会将spring注入的service清空。

造成引用空指针的情况,如何解决呢?


@Component
public class UserUtils {
   @Autowired
   private UserService userService;
   private static UserUtils userUtils;

@PostConstruct
   public void init() {
       userUtils = this;
       userUtils.userService = this.userService;
   }
}

使用:


User user = userUtils.userService.getUser(loginCode);

来源:https://blog.csdn.net/weixin_43861630/article/details/109101869

标签:springboot,static,service,null
0
投稿

猜你喜欢

  • 通过实例深入了解java序列化

    2022-12-01 17:37:39
  • java基础之NIO介绍及使用

    2022-06-07 11:30:14
  • Java基于Runtime调用外部程序出现阻塞的解决方法

    2023-11-09 04:24:23
  • 重写hashCode()和equals()方法详细介绍

    2023-11-24 16:13:33
  • Springboot Mybatis Plus自动生成工具类详解代码

    2022-09-17 12:01:57
  • java实现简单的猜数字小游戏

    2023-11-11 12:55:40
  • Spring源码解析 Bean属性填充

    2021-06-28 19:17:16
  • C#中通过Command模式实现Redo/Undo方案

    2021-07-12 14:58:59
  • flutter窗口初始和绘制流程详析

    2023-08-17 21:07:30
  • spring cloud gateway如何获取请求的真实地址

    2023-11-28 20:20:12
  • Toolbar制作菜单条过程详解

    2022-11-29 04:13:59
  • logback关闭某个包的日志操作

    2023-04-12 20:16:57
  • Java 用反射设置对象的属性值实例详解

    2023-11-26 03:56:51
  • Springboot启动后执行方法小结

    2022-09-26 22:12:02
  • 教你如何使用Java8实现菜单树形数据

    2022-09-11 12:29:22
  • 在springboot中对kafka进行读写的示例代码

    2023-11-26 00:48:02
  • springboot2.2 集成 activity6实现请假流程(示例详解)

    2022-09-18 08:54:21
  • Mybatis-plus基于redis实现二级缓存过程解析

    2021-12-08 23:34:43
  • Java构建JDBC应用程序的实例操作

    2023-08-07 12:09:13
  • SpringBoot注解梳理(小结)

    2023-11-10 13:27:19
  • asp之家 软件编程 m.aspxhome.com