前言

今天在做项目的时候,我在监听器里面使用@Value注解获取配置文件中的值,然后出现了空指针错误,表示值没有获取到。

  1. 然后我试了一下在controller层里面设置一个get方法,然后通过get方法获取,然后发现也是不行的。有点懵!

  2. 后来我发现了一个问题,我设置的Listener类和springboot不能共享spring的上下文,因为我这个类没有通过@Component注解加入到spring管理,所以获取不到值。

  3. 最后我想到了一个办法通过构造器传值。

初始代码

import com.infosec.itsramanage.listener.system.ThreadCpu;import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;public class SystemListener implements ServletContextListener {@Value("${systemCpuProperties}")private String scp;@Overridepublic void contextInitialized(ServletContextEvent sce) {ThreadCpu threadCpu = new ThreadCpu(scp);threadCpu.start();}}import com.infosec.itsramanage.listener.SystemListener;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class WebMvcConfig {//设置监听器,在服务上下文初始化的时候执行监听@Beanpublic ServletListenerRegistrationBean<SystemListener> systemListener(){ServletListenerRegistrationBean<SystemListener> servletListenerRegistrationBean = new ServletListenerRegistrationBean<>();servletListenerRegistrationBean.setListener(new SystemListener());return servletListenerRegistrationBean;}
}

修改后的代码

import com.infosec.itsramanage.listener.system.ThreadCpu;import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;public class SystemListener implements ServletContextListener {private String scp;public SystemListener(String scp) {super();this.scp = scp;}@Overridepublic void contextInitialized(ServletContextEvent sce) {ThreadCpu threadCpu = new ThreadCpu(scp);threadCpu.start();}}import com.infosec.itsramanage.listener.SystemListener;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class WebMvcConfig {@Value("${systemCpuProperties}")private String scp;//设置监听器,在服务上下文初始化的时候执行监听@Beanpublic ServletListenerRegistrationBean<SystemListener> systemListener(){ServletListenerRegistrationBean<SystemListener> servletListenerRegistrationBean = new ServletListenerRegistrationBean<>();servletListenerRegistrationBean.setListener(new SystemListener(scp));return servletListenerRegistrationBean;}
}

问题完美解决,希望被采纳!!!

Spring项目中value注解,@Value不能够读取到配置文件的值,无法成功注入值的问题解决(超简单)相关推荐

  1. 【SpringBoot】Spring项目中value注解,@Value不能够读取到配置文件的值,无法成功注入值的问题汇总及解决

    Spring项目中value注解,@Value不能够读取到配置文件的值,无法成功注入值的问题汇总及解决 @Value注解 常规用法示例 我们都知道通过@Value()注解可以取到我们配置文件的内容,之 ...

  2. Spring项目中 注解@Aspect无法被引入的原因

    Spring项目中 注解@Aspect无法被引入的原因 解决方式 解决方式    在maven 中引入最新版本的Aspectj依赖,官网显示为 <!-- https://mvnrepositor ...

  3. spring 项目中集成 Protocol Buffers 示例

    http://blog.csdn.net/fangzhangsc2006/article/details/8687388 本文适用于了解spring框架,同时想在spring项目中使用Protocol ...

  4. 将MongoDB集成到您的Spring项目中

    本文展示了如何通过注释配置将MongoDB集成到您的spring项目中. 我们将从Gradle配置开始. group 'com.gkatzioura.spring' version '1.0-SNAP ...

  5. redis集成spring_将Redis集成到您的Spring项目中

    redis集成spring 本文介绍如何通过注释配置将Redis缓存集成到您的spring项目中. 我们将从Gradle配置开始. 我们将使用jedis驱动程序. group 'com.gkatzio ...

  6. 将Redis集成到您的Spring项目中

    本文展示了如何通过注释配置将Redis缓存集成到您的spring项目中. 我们将从Gradle配置开始. 我们将使用jedis驱动程序. group 'com.gkatzioura.spring' v ...

  7. 在Maven+Spring项目中使用Node.js的Gulp进行前端自动化构建

    摘要: 在Maven+Spring项目中使用Node.js的Gulp进行前端自动化构建 刚开始打算进行前后端分离开发,后来发现在使用JSP或者Freemarker做动态页面时,想发挥这些自动化构建工具 ...

  8. 在Spring项目中集成使用MongoDB

    在Spring项目中集成使用MongoDB 这里使用的是maven工程,所以依赖jar包都是pom.xml配置型式. pom.xml引入依赖 <properties><spring. ...

  9. mybatis手动切换数据库_在Spring项目中使用 Mybatis 如何实现动态切换数据源

    在Spring项目中使用 Mybatis 如何实现动态切换数据源 发布时间:2020-11-17 16:20:11 来源:亿速云 阅读:108 作者:Leah 这篇文章将为大家详细讲解有关在Sprin ...

最新文章

  1. Gmapping从开始到放弃—写一个TF 监听
  2. 关键数据保险箱,AD RMS服务器部署指南
  3. ajax请求 禁用缓存,jQuery ajax缓存禁用无法正常工作?
  4. ASP.NET Core中的响应压缩
  5. csm和uefi_关于CSM和UEFI你要知道的一些事
  6. java-生产者消费者模式
  7. Linux神器strace的使用方法及实践
  8. Ubuntu 图形界面入门
  9. 犀牛Rhino教程合集37部
  10. CentOS7 系统盘扩容
  11. 满格信号服务器开小差,明明信号满格,网络却很慢?教你三招解决!
  12. 自己最近在补天测试总结的一般思路
  13. strncasecmp函数
  14. 扎拉赞恩 服务器 微信群,wow怀旧服扎拉赞恩任务怎么做-wow怀旧服扎拉赞恩的头颅在哪里-地点位置_牛游戏网...
  15. 数据结构 散列表 除留余数法 线性探测法解决冲突
  16. ajdt插件安装后无效_使用Eclipse和AJDT开发面向方面的Java应用程序
  17. Leap Motion开发(六)多Leap Motion研究
  18. 常用的国内 PyPI 镜像
  19. Pixel 、Xiaomi root刷机-降级版本
  20. QCI开发出性能最强的量子软件平台

热门文章

  1. python字符串转日期_python 日期、时间、字符串相互转换
  2. Conda虚拟环境(创建查看激活)
  3. 浅谈软件测试工程师必须要了解的4个证书
  4. Matlab中set函数的用法
  5. 那些年,我走过的场子!
  6. win7笔记本变wifi路由
  7. 用友u8计算机配置,[计算机]用友U8服务器及相关推荐配置.doc
  8. nginx关闭access日志
  9. pcDuino-V2操作系统的安装-ubuntu/Android
  10. 了解Javascript中的异步等待