zoukankan      html  css  js  c++  java
  • 关于Springboot JeecgBoot 工具类注入bean 问题

    1.问题
    由于Util工具类中需要读取配置信息,需要注入Bean,但是如果将方法设置为静态方法,就无法读取到注入Bean。在springframework里,我们不能@Autowire一个静态变量,使之成为一个spring bean,例如:

    @Autowired
    private static LogConfig logConfig;

    这样做,启动时还正常,但是调用方法是就会出现空指针异常。因为静态变量、类变量不是对象的属性,而是一个类的属性,所以静态方法是属于类(class)的,普通方法才是属于实体对象(也就是New出来的对象)的,spring注入是在容器中实例化对象,所以不能使用静态方法。

    2.解决方案
    首先要了解一下Java变量的初始化顺序为:静态变量或静态语句块–>实例变量或初始化语句块–>构造方法–>@Autowired
    (1)使用@PostConstruct注解

    @Component
    public class Demo {
    @Autowired
    private TestConfig testConfig;
    
    private static TestConfig config;
    
    @PostConstruct
    public void init() {
    config = testConfig;
    }
    
    public static void demo() {
    config.test();
    }
    }


    之前看有人再解释这个静态注入的时候,在这个地方,要在构造方法上加个@Autowired注解,但是我试了一下,不加注解也可以
    ————————————————
    版权声明:本文为CSDN博主「Leq」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/hzr0523/article/details/81533685

    如有错误,望费心指出。 感激涕零。
  • 相关阅读:
    深入理解redis数据类型
    js获取带#号链接后的参数
    js对象深拷贝与浅拷贝
    VUE + ElementUI 从搭建到运行
    python 输入一个整数,判断其是否既是3的倍数,又是5的倍数
    输入一个三位整数,顺序打印个位、十位、百位上的数
    python 输入三个整数,按照从小到大的顺序打印
    python 运算符与分支结构
    python 变量定义
    python 环境安装
  • 原文地址:https://www.cnblogs.com/zouxiaopq/p/14514891.html
Copyright © 2011-2022 走看看