首页 > 其他分享 >静态方法中如何使用Spring的注入对象

静态方法中如何使用Spring的注入对象

时间:2022-09-19 17:01:57浏览次数:88  
标签:PostConstruct 静态方法 Autowired Spring myUtil 初始化 注解 注入

问题 :

  1. 静态方法里边引用了非静态变量b,会直接报错
  2. 静态方法中引用的b虽然用了@Autowired注解,但是该注解的注入是在静态方法加载之后执行的,所以此处的b在使用时为null
  3. 当一个类包含了@Autowired的子类时,他就必须交给spring来处理而不能使用new来初始化,否则会导致他的自动装配的子类为null。所以如果使用注解的方式,那么我们这个MyUtil 类就需要加上@Component注解来交给Spring进行初始化。

解决方法 :

  1. 使用PostConstruct注解
  2. PostConstruct标注方法执行时机
  3. 完成依赖注入以执行任何初始化之后,在类投入服务之前调用,即:在spring项目中,在一个bean的初始化过程中,方法执行先后顺序为
    Constructor > @Autowired > @PostConstruct

正确代码 :

@Component
public class MyUtil {

    private static MyUtil myUtil;

    @Autowired
    private B b;

    @PostConstruct
    public void init(){
        myUtil = this;
        myUtil.b = this.b;
    }

    public static void testB(String test) {
        myUtil.b.methodB();
    }
}

参考文献:https://blog.csdn.net/Jarbein/article/details/117857580

标签:PostConstruct,静态方法,Autowired,Spring,myUtil,初始化,注解,注入
From: https://www.cnblogs.com/seawavelin/p/16708258.html

相关文章

  • Spring基础 01
    Maven项目的创建项目所在路径-项目一-创建Module-添加Webapp(ProjectStructure)-项目二Spring简介分层全栈(各层解决方案)轻量级框......
  • 代码注入
    代码注入代码注入是利用计算机的错误,这种错误是由处理无效数据引起的。成功的代码注入的结果可能是灾难性的(数据泄露、篡改数据等)一、SQL注入SQL注入利用SQL的语言来注......
  • Spring(四):HelloSpring
    上一篇学习了控制反转(IoC)的本质和具体实现方法,这次我们就学习写一个小的项目来体验这个过程。一、项目构建1.Maven依赖(导包)<dependencies><!--https://mvn......
  • SpringCloud框架开发
     1.是什么微服务 是一种架构模式,他提倡将单一应用程序划分一组小的服务,服务之间的相互配合、互相协调。 2.SpringCloud简介 SpringClound等于分布式微服务架构......
  • Spring 注册 Bean 在配置中的定义和使用 Autowired
    因为项目的需要,我们使用了一个第三方的电子邮件库,但是我们希望把这个库在项目中注册成Bean然后随时在其他地方使用。Configuration在哪里注册?我们通常可以在Configur......
  • Spring源码分析-Bean实现
    实现SpringBean功能定义扫描路径创建ApplicationContext类packagecom.smile.spring;publicclassApplicationContext{}采用配置类加注解实现配置功能创建......
  • springboot拦截器
    packagecom.module.interceptor;importlombok.Data;importlombok.extern.slf4j.Slf4j;importorg.springframework.context.annotation.Configuration;importorg......
  • springboot内置tomcat配置本地文件夹的映射路径
    例如要访问的本地路径是D盘下的PersonalHomePage目录的某个图片1importorg.springframework.context.annotation.Configuration;2importorg.springframework.web.......
  • Spring(三):IoC的本质
    一、图例  对照上面的图,我们回想上一篇中几个代码的实现,在没有set注入之前,代码运行完全由Service层控制,用户没有选择权,选择权在程序员手中;但是使用set注入之后,用户可......
  • springboot中解析JSON参数
    解析psot请求中的JSON参数Map<String,String>attrMap=newHashMap<String,String>();BufferedReaderstreamReader=null;try{streamReader=newBufferedRead......