首页 > 其他分享 >静态方法注入service的部分方式

静态方法注入service的部分方式

时间:2023-12-14 18:11:18浏览次数:34  
标签:静态方法 service redisService void util key 注解 注入

util注入service整理

后续如果有新的办法再加进来

在如Util等静态方法中调用Service或mapper,初始化后会出现空指针异常:java.lang.NullPointerException。

代码执行优先级的问题,在一个Java类中,存在着静态代码块,静态方法,构造函数,成员方法等等。不同形式的代码执行顺序不同:执行顺序优先级:

静态代码块>静态方法>构造函数(此时通过@Autowired修饰的成员变量为null)>bean注入

@PostConstruct注解的init函数

类上加入了 @Component注解 使得可以使用注解注入,并交由Sping容器管理。

1. Service

注入需要调用的Service以及同类型的静态变量

@Component
public class CsrfTokenUtil {
   private static RedisService redisService;
   
   public void setRedisService(RedisService redisService) {
       CsrfTokenUtil.redisService = redisService;
  }
   
   public static void deleteToken(String pageToken) {
       String key = genKey();
       if (StrExUtil.isNotBlank(key)) {
           // 从redis集合中删除
           redisService.setRemove(CacheNamesapce.CSRF_TOKEN, key, pageToken);
      }
  }
}

2. 注解@PostConstruct

使用自带注解@PostConstruct 注释到初始化方法中,并在该初始化方法中将注入的对象赋予静态成员变量。

@Component
public class CsrfTokenUtil {
   
   private static CsrfTokenUtil util;
   @Autowired
   private RedisService redisService;

   @PostConstruct
   public void init() {
       util = this;
       util.redisService = this.redisService;
  }

   public static void deleteToken(String pageToken) {
       String key = genKey();
       if (StrExUtil.isNotBlank(key)) {
           // 从redis集合中删除
           util.redisService.setRemove(CacheNamesapce.CSRF_TOKEN, key, pageToken);
      }
  }
}


标签:静态方法,service,redisService,void,util,key,注解,注入
From: https://www.cnblogs.com/empty-me/p/17901727.html

相关文章

  • Istio从入门到精通—— 流量治理的原理 —— VirutalService —— HTTPRouteDestinati
     流量治理的原理——VirutalService——HTTPRouteDestinationhttps://istio.io/latest/docs/reference/config/networking/virtual-service/#HTTPRouteDestination Eachroutingruleisassociatedwithoneormoreserviceversions(seeglossaryinbeginning......
  • 0x02 Network Services
    Task1、引言这个房间将探讨常见的网络服务漏洞和错误配置。Task2、了解SMB什么是SMB?SMB-服务器消息块协议-是一种客户端-服务器通信协议,用于共享对网络上的文件、打印机、串行端口和其他资源的访问。sourceSMB协议被称为响应请求协议,这意味着它在客户端和服务器之间传输......
  • BugKu-Web-Flask_FileUpload(模板注入与文件上传)
    FlaskFlask是一个使用Python编写的轻量级Web应用框架。它是一个微型框架,因为它的核心非常简单,但可以通过扩展来增加其他功能。Flask的核心组件包括Werkzeug,一个WSGI工具箱,以及Jinja2,一个模板引擎。Flask使用BSD授权,这意味着它遵循开源许可证,允许用户自由地使用、修改和分发。Fla......
  • service mesh
    一 、云原生简介云原生架构的应用程序应该是:采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。 云原生的四要素微服务:几乎每个云原生的定义都包......
  • .NET 依赖注入的3中方式
    一、简介    依赖注入共有3种方式:构造函数注入、属性注入、方法注入二、构造函数注入    在program.cs中对组件进行注册:   builder.Services.AddScoped<IScopedService,ScopedService>();    服务注册配置后,在需要注入的类上使用构造函数。pu......
  • 什么是Spring的依赖注入(Dependency Injection,简称DI)?
    控制反转IoC是一个很大的概念,可以用不同的方式来实现。其主要实现方式有两种:依赖注入和依赖查找依赖注入:相对于IoC而言,依赖注入(DI)更加准确地描述了IoC的设计理念。所谓依赖注入(DependencyInjection),即组件之间的依赖关系由容器在应用系统运行期来决定,也就是由容器动态地将某种依......
  • vue3自定义组件全局注入
    /***自定义组件全局注入*@paramappvue实例*/import{defineAsyncComponent}from"vue";exportdefaultfunction(app){//收集@/components所有.vue组件constcomponents=import.meta.glob('@/components/*/*.vue');for(let[key,value......
  • 【Azure App Service】误删除App Service资源,怎么办?
    问题描述操作不当,误删除了AppService的资源,怎么办? 问题解答根据Azure官方文档,可以使用Powershell命令恢复到原始AppService应用名称。操作步骤第一步:列出已删除的应用Get-AzDeletedWebAppGet-AzDeletedWebApp|Format-Table-PropertyDeletionTime,Name,Location,Resourc......
  • 【Azure App Service】误删除App Service资源,怎么办?
    问题描述操作不当,误删除了AppService的资源,怎么办? 问题解答根据Azure官方文档,可以使用Powershell命令恢复到原始AppService应用名称。操作步骤第一步:列出已删除的应用Get-AzDeletedWebAppGet-AzDeletedWebApp|Format-Table-PropertyDeletionTime,Name......
  • QoS(Quality of Service)
      总的来说,QoS是一个强大的工具,它提供了一种高效、灵活的方式来处理分布式系统中的数据通信和共享问题。在ROS1中,节点间的通信是基于TCP的。因为TCP的失败重传机制,在一些网络不稳定的场景,通信会出现延时严重的问题。这大大限制了ROS1的使用场景。在ROS2中,采用DDS作为通信中间......