返回顶部
首页 > 资讯 > 后端开发 > Python >springboot 静态方法中使用@Autowired注入方式
  • 455
分享到

springboot 静态方法中使用@Autowired注入方式

2024-04-02 19:04:59 455人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录静态方法使用@Autowired注入静态方法使用@Autowired注入的类解决方法静态方法使用@Autowired注入 @Component public class Stru

静态方法使用@Autowired注入

@Component
public class StructUtil {
    private static StructService structService;
    private static List<StructInfo> structInfos;
	
	// 通过重写set注入
    @Autowired
    public void setStructService(StructService structService){
        StructUtil.structService = structService;
    }
    public static List<StructInfo> getStruct(){
        if(null==structInfos){
            structInfos = structService.getStruct();
        }
        return structInfos;
    }
}

静态方法使用@Autowired注入的类

在写公众号开发的时候,有一个处理get请求,我想使用spring提供的RestTemplate处理发送;

原来是这样的

@Component
public  class WeChatContant {
@Autowired
    private RestTemplate restTemplate;
 
    public  JSONObject doGerStr(String url) throws ioException {
        ResponseEntity responseEntity = restTemplate.getForEntity
                (
                        url,
                        String.class
                );
        Object body = responseEntity.getBody();
        assert body != null;
        jsONObject jsonObject = JSONObject.fromObject(body);
        System.out.println(11);
        return jsonObject;
    }
}

但是到这里的话restTemplate这个值为空,最后导致空指针异常。发生的原因是

static模块会被引入,当class加载后。你的component组件的依赖还没有初始化。

(你的依赖都是null)

解决方法

可以使用@PostConstruct这个注解解决

1,@PostConstruct 注解的方法在加载类的构造函数之后执行,也就是在加载了构造函数之后,为此,可以使用@PostConstruct注解一个方法来完成初始化,@PostConstruct注解的方法将会在依赖注入完成后被自动调用。

2,执行优先级高于非静态的初始化块,它会在类初始化(类加载的初始化阶段)的时候执行一次,执行完成便销毁,它仅能初始化类变量,即static修饰的数据成员。

自己理解的意思就是在component组件都加载完之后再加载

修改过后的代码如下

@Component
public  class WeChatContant {
    @Autowired
    private RestTemplate restTemplate;
    private static RestTemplate restTemplateemp;
    @PostConstruct
    public void init(){
        restTemplateemp  = restTemplate;
    }
    
    public static JSONObject doGerStr(String url) throws IOException {
        ResponseEntity responseEntity = restTemplateemp.getForEntity
                (
                        url,
                        String.class
                );
        Object body = responseEntity.getBody();
        assert body != null;
        JSONObject jsonObject = JSONObject.fromObject(body);
        System.out.println(11);
        return jsonObject;
    }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: springboot 静态方法中使用@Autowired注入方式

本文链接: https://lsjlt.com/news/139069.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • springboot 静态方法中使用@Autowired注入方式
    目录静态方法使用@Autowired注入静态方法使用@Autowired注入的类解决方法静态方法使用@Autowired注入 @Component public class Stru...
    99+
    2024-04-02
  • Spring使用@Autowired注解静态实例对象方式
    目录Spring @Autowired注解静态实例对象问题原因解决方案方式一方式二方式三方式四总结@Autowired注解和静态方法一、业务场景二、原理剖析三、解决方法1、将@Aut...
    99+
    2024-04-02
  • 浅谈SpringBoot @Autowired的两种注入方式
    Autowired有两种注入方式 by type by name 默认使用的是byType的方式向Bean里面注入相应的Bean。例如: @Autowire...
    99+
    2024-04-02
  • 关于@Autowired注解和静态方法及new的关系
    目录@Autowired注解和静态方法及new关系一、@autowired 与new 二、@autowired 与静态方法1.spring框架应用中有些静态方法需要依赖被容...
    99+
    2024-04-02
  • Springboot中静态文件的引入方式有哪些
    这篇文章给大家分享的是有关Springboot中静态文件的引入方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。thymeleaf 模式依赖中引入<!-- 渲染静态页面 -->...
    99+
    2023-06-29
  • SpringBoot+thymeleaf静态资源引入的方法
    本文小编为大家详细介绍“SpringBoot+thymeleaf静态资源引入的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot+thymeleaf静态资源引入的方法”文章能帮助大家解...
    99+
    2024-04-02
  • Springboot中静态文件的两种引入方式总结
    目录thymeleaf 模式依赖中引入可选配置yml 做如下配置构架这样构架非thymeleaf 模式首先去掉依赖删除controller的指向view层yml文件中这样配置&nbs...
    99+
    2024-04-02
  • Springboot 读取自定义pro文件注入static静态变量方式
    Springboot 读取pro文件注入static静态变量 mailConfig.properties #服务器 mail.host=smtp.qq.com #端口号 mail...
    99+
    2024-04-02
  • SpringBoot中@Autowired生效方式详解
    目录前言正文注册AutowiredProcessor的BeanDefinition实例化AutowiredProcessor创建bean时进行注入后记前言 @Component pu...
    99+
    2024-04-02
  • spring注入静态变量的方式有哪些
    在Spring中,无法直接通过注解的方式将静态变量注入到Bean中,因为静态变量属于类级别的,而Spring的注入是依赖于对象实例的...
    99+
    2023-08-24
    spring
  • SpringBoot使用@Value实现给静态变量注入值
    SpringBoot中使用@Value()只能给普通变量注入值,不能直接给静态变量赋值 例如 application-dev.properties 配置文件有如下配置: 给普通变量...
    99+
    2024-04-02
  • 详解SpringBoot静态方法获取bean的三种方式
    目录方式一 注解@PostConstruct方式二 启动类ApplicationContext方式三手动注入ApplicationContext方式一 ...
    99+
    2024-04-02
  • springboot手动动态注入controller和service方式
    目录手动动态注入controller和service在controller中使用参数说明手动动态注入controller和service package test; import o...
    99+
    2024-04-02
  • Python中静态方法,类方法,属性方法使用方法
    目录1.静态方法2.类方法3.静态方法与类方法总结4.属性方法1.静态方法 通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普...
    99+
    2024-04-02
  • C#中如何使用静态方法
    C#中如何使用静态方法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#静态方法使用中遇到的问题:在源码工程中几乎没有看到什么静态方法,但是在Ms的SQLHelper中几乎全部...
    99+
    2023-06-17
  • 深入Android中BroadcastReceiver的两种注册方式(静态和动态)详解
    今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式。 BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是...
    99+
    2022-06-06
    静态 动态 Android
  • 使用Spring静态注入实现读取配置工具类新方式
    目录Spring静态注入实现读取配置工具类核心代码拓展Spring两种方式注入到静态工具类里方式1方式2:zsSpring静态注入实现读取配置工具类 Spring静态注入的核心首先是...
    99+
    2024-04-02
  • C#静态方法的使用
    一、简介 使用了static 修饰符的方法为静态方法,反之则是非静态方法。 静态方法是一种特殊的成员方法,它不属于类的某一个具体的实例,而是属于类本身。所以对静态方法不需要...
    99+
    2024-04-02
  • Springboot 读取自定义pro文件注入static静态变量的方法
    本篇内容介绍了“Springboot 读取自定义pro文件注入static静态变量的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Spr...
    99+
    2023-06-20
  • 如何在SpringBoot中使用main方法注入service
    如何在SpringBoot中使用main方法注入service?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、SpringBoot中的main方法注入service在spri...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作