package com.tthk.inland.ticket.core.utils.statistic;
import com.tthk.inland.ticket.core.utils.redis.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class StaticRedisTemplateComponet {
@Autowired
private RedisUtil redisUtil;
private static void test(){
redisUtil.get("test");
}
}
有时候我们在静态方法里面无法使用@Autowired引入的bean,因为有加载顺序问题会报错
// 这一行的 redisUtil 会爆红
redisUtil.get("test");
这个时候我们就需要单独去实例化这个引用,并且变成默认的静态方法如下:
package com.tthk.inland.ticket.core.utils.statistic;
import com.tthk.inland.ticket.core.configurations.activemq.QueueProducerService;
import com.tthk.inland.ticket.core.utils.redis.RedisUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
@RequiredArgsConstructor
public class StaticRedisTemplateComponet {
private final QueueProducerService queueProducerService;
private final RedisUtil redisUtil;
private static QueueProducerService staticQueueProducerService;
private static RedisUtil staticRedisUtil;
@PostConstruct
public void init() {
staticQueueProducerService = this.queueProducerService;
staticRedisUtil = this.redisUtil;
}
public static RedisUtil getStaticRedisTenService() {
return staticRedisUtil;
}
public static QueueProducerService getStaticQueueProducerService() {
return staticQueueProducerService;
}
}
这样我们就可以用get方法来进行获取
StaticRedisTemplateComponet.getStaticRedisTenService().get("tt_interface_switch",10);
第二种方法,比较原始@Autowired会根据bean里面注册的name来进行搜索,如果获取到了,则进行赋值
private static ZXSearchNewService_new zxSearchNewService_new;
private static QueueProducerService messageService;
@Autowired
public zxSearch(QueueProducerService queueProducerService,ZXSearchNewService_new zxSearchNewService_new) {
zxSearch.zxSearchNewService_new = zxSearchNewService_new;
zxSearch.messageService = queueProducerService;
}