问题描述

今天在写一个工具类,里面用了@Autowired注入了StringRedisTemplate以及RedisTemplate时,在template.opsForValue().set(key, obj)方法一直报 java.lang.nullpointerexception 异常,经过调试发现template为null。

Spring 注入失败

可能的原因: 网上百度了很久,原因可能在于我的utils包的类和controller的类不是同一个上下文。

解决办法

通过添加以下三个关键的地方,可以解决该问题

关于@PostConstruct:被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Serclet的inti()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。
//解决工具类中注入 3个步骤
@Component //关键步骤1,添加Component
public class RedisUtils { @Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisTemplate<String, Object> template; public static RedisUtils redisUtils; // 关键2 添加该类的静态对象
protected static Logger logger = LoggerFactory.getLogger(RedisUtils.class); public RedisUtils() {
} // 关键3 用PostConstruct修饰init方法,并在init方法中对其赋值
@PostConstruct
public void init() {
redisUtils = this;
redisUtils.template = this.template;
redisUtils.stringRedisTemplate = this.stringRedisTemplate;
}

这样就可以通过redisUtils.template.opsForValue().set(key, obj)调用了

Spring @Autowired注解在非Controller中注入为null的更多相关文章

  1. Spring boot @Autowired注解在非Controller中注入为null

    参考链接:https://blog.csdn.net/qq_35056292/article/details/78430777

  2. Spring @Autowired注解在非Controller/Service中注入为null

    参考:https://blog.csdn.net/qq_35056292/article/details/78430777 问题出现: 在一个非controller/service类中,我需要注入Co ...

  3. 【转】在SpringMVC Controller中注入Request成员域

    原文链接:https://www.cnblogs.com/abcwt112/p/7777258.html 原文作者:abcwt112 主题 在工作中遇到1个问题....我们定义了一个Controlle ...

  4. 在SpringMVC Controller中注入Request成员域

    主题 在工作中遇到1个问题....我们定义了一个Controller基类,所有Springmvc自定义的controller都继承它....在它内部定义一个@Autowired HttpServlet ...

  5. SpringMVC Controller中注入Request成员域和在方法中定义中HttpServletRequest有啥区别

    先说结论,在Controller中注入Request是线程安全的. 以下是解释: 我们先来看看这两者有什么不同 在controller注入成员变量request 可以看到注入的是一个代理对象 写在方法 ...

  6. spring aop在mvc的controller中加入切面无效

    spring aop在mvc的controller中加入切面无效 因为MVC的controller,aop默认使用jdk代理.要使用cglib代理. 在spring-mybatis.xml配置文件中加 ...

  7. Spring @Autowired 注解 学习资料

    Spring @Autowired 注解 学习资料 网址 Spring @Autowired 注解 https://wiki.jikexueyuan.com/project/spring/annota ...

  8. Spring @Autowired 注解自动注入流程是怎么样?

    面试中碰到面试官问:"Spring 注解是如果工作的?",当前我一惊,完了这不触及到我的知识误区了吗?,还好我机智,灵机一动回了句:Spring 注解的工作流程倒还没有看到,但是我 ...

  9. Spring@Autowired注解与自动装配

    1   配置文件的方法 我们编写spring 框架的代码时候.一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量.并且要配套写上 get 和 set方法. Boss ...

随机推荐

  1. 【学习】C++多态机制

    多态:静态(早绑定) 在编译阶段和链接就能确定功能调用的函数.     动态(晚绑定) 在程序运行时根据需要的功能确定调用的函数. 实现晚绑定就要定义虚函数,使用虚函数则会用到基类指针. 继承基类虚成 ...

  2. find命令简单使用

    find命令是Linux系统查找文件的命令,能帮助用户在使用.管理Linux的日常事务时方便的查找出用户所需要的文件,find命令基本格式是:find [路径] [选项] [操作]. 列举一下find ...

  3. java web(一):tomcat服务器的安装和简单介绍,与eclipse关联

    一:下载tomcat安装包和安装 这个百度一下就可以了. 安装完以后进入tomcat的安装路径查看 如图所示:有几个目录简单介绍下 bin目录:   存放运行tomcat服务器的相关命令. conf目 ...

  4. Django之 HelloWorld

    1.C:\Users\andy>django-admin startproject sundyblog   ## 创建项目     C:\Users\andy>cd sundyblog2. ...

  5. [ZZ] 多领域视觉数据的转换、关联与自适应学习

    哈工大左旺孟教授:多领域视觉数据的转换.关联与自适应学习 http://blog.sciencenet.cn/home.php?mod=space&uid=3291369&do=blo ...

  6. 【Dubbo源码学习】负载均衡算法(2)-轮询算法的实现

    @Overrideprotected <T> Invoker<T> doSelect(List<Invoker<T>> invokers, URL ur ...

  7. RN 时间戳

    let curTime = Date.now(); 获取到当前时间 curTime: 1555120690696 是指从1970.1.1到现在的毫秒(ms)数 cxk() { //之前时间 let p ...

  8. Some elementary algorithms on discrete differential geometry(DDGSpring2016 Demos)

    I studied the on-line course(http://brickisland.net/DDGSpring2016/) by myself, and here are the scre ...

  9. MTSC2018 | 确认过眼神,在这里能遇见Google、阿里、百度......

    MTSC2018部分Topic曝光啦 Google,阿里,百度,美团,小米,360,网易等公司是如何将技术转化为现实生产力,提高工作效率的?离开Saucelab的Jonathan又是如何规划Appiu ...

  10. windows使用im4java 提示FileNotFoundException

    1)安装imageMagic时候要勾上convert那一行,确保安装目录下有convert.exe 2)使用image4java的全局类里面加上 //ImageMagick的安装路径 public s ...