在调用工具类时,若工具类中含有@Autowired注解,这此工具类对象必须同样使用@Autowired注解,否则工具类中的Spring注入的对象都为空值,这里的HadoopTest就是这样

比如MyConfig类是

配置层
@Component
@ConfigurationProperties(prefix = "project")
public class MyConfig {
private String version;
private String name; public String getVersion() {
return version;
} public void setVersion(String version) {
this.version = version;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
} HadoopTest类引用了MyConfig
public class HadoopTest { @Autowired
MyConfig myConfig; //这里用了注入,所以controller层的test类中 HadoopTest hadoopTest=new HadoopTest();是无效的 public void getName() {
System.out.println(myConfig.getName());
} } Controller中
@RestController
public class test {
HadoopTest hadoopTest=new HadoopTest(); @GetMapping("hello")
public void hello() {
hadoopTest.getName();
}
}

这样在System.out.println(myConfig.getName());中是找不到myconfig的,我们应该改成

配置层
@Component
@ConfigurationProperties(prefix = "project")
public class MyConfig {
private String version;
private String name; public String getVersion() {
return version;
} public void setVersion(String version) {
this.version = version;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
} HadoopTest类引用了MyConfig
@Component
public class HadoopTest { @Autowired
MyConfig myConfig; public void getName() {
System.out.println(myConfig.getName());
} } Controller类中
@RestController
public class test {
@Autowired
HadoopTest hadoopTest; @GetMapping("hello")
public void hello() {
hadoopTest.getName();
}
}

或者是

配置层
@Compoment
@ConfigurationProperties(prefix = "project")
public class MyConfig {
private String version;
private String name; public String getVersion() {
return version;
} public void setVersion(String version) {
this.version = version;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
} HadoopTest类引用了MyConfig
public class HadoopTest { MyConfig myConfig=new Myconfig; public void getName() {
System.out.println(myConfig.getName());
} } Controller类中
@RestController
public class test {
HadoopTest hadoopTest=new HadoopTest(); @GetMapping("hello")
public void hello() {
hadoopTest.getName();
}
}

也就是一条逻辑线上,HadoopTest注入了MyConfig,那么在test中必须也是注入而不是new,原因以后在补充。

补充:1.在第三种情况中,虽然MyConfig被注释了,但是只要不去注入它就没关系。

SpringBoot @AutoWired Null的更多相关文章

  1. springboot Autowired BeanNotOfRequiredTypeException

    现象 org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'xxxxImpl' is expect ...

  2. Springboot @Autowired 无法注入问题

    特别提醒:一定要注意文件结构 WebappApplication 一定要在包的最外层,否则Spring无法对所有的类进行托管,会造成@Autowired 无法注入. 1. 添加工具类获取在 Sprin ...

  3. 引入 ServletContextListener @Autowired null 解决办法

    public class ScheduleController implements ServletContextListener { @Autowired private ScheduleServi ...

  4. SpringBoot @Autowired中注入静态方法或者静态变量

    注:用static去定义一个注入的方法或者配置文件值变量,编译时不会有任何异常,运行时会报空指针. Spring官方不推荐此种方法. 原理: https://www.cnblogs.com/chenf ...

  5. Spring Autowired错误???

    @SpringBootApplicationpublic class TestMqApplication extends SpringBootServletInitializer { @Suppres ...

  6. 简单模拟IOC容器:为添加了@Autowired的属性赋值(初始值)

    创建@Autowired注解 package com.zzj.test; import java.lang.annotation.ElementType; import java.lang.annot ...

  7. Spring 注解原理(三)@Qualifier @Value

    Spring 注解原理(三)@Qualifier @Value Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) 一.Aut ...

  8. spring之mvc原理分析及简单模拟实现

    在之前的一篇博客中已经简单的实现了spring的IOC和DI功能,本文将在之前的基础上实现mvc功能. 一 什么是MVC MVC简单的说就是一种软件实现的设计模式,将整个系统进行分层,M(model ...

  9. spring之IOC模拟实现

    使用Spring框架已经有很长时间了,一直没有仔细的想过框架的设计思想是什么样的,底层到底是怎么实现的,这几天调试程序看了些源码,写下来做个记录.由于Spring框架博大精深,个人理解的难免有不正确的 ...

随机推荐

  1. JavaScript深浅拷贝

    深浅拷贝 基本类型和引用类型 ECMAScript 中的变量类型分为两类: 基本类型:undefined,null,布尔值(Boolean),字符串(String),数值(Number) 引用类型: ...

  2. NOI2018 退役记

    退役预订... upd 果然就这么不光荣的退役了... 我居然考出了一场只有两题得分的比赛,我好菜啊... 不过高三充(tui)实(fei)的生活应该很有意思... 大家一起加油吧!!!

  3. Linux 命令 "cp" 代码实现简介

    本blog主要是模仿Linux的cp命令的功能,未实现参数,只是基础功能部分. 本文的主要目的在于练习 文件流 和 目录流 中的函数的使用. 主要功能包括两种: 源文件属性为文件,拷贝到其它文件(内容 ...

  4. C# 枚举转字符串

    有时候需要把枚举转字符串,那么如何把枚举转字符串? 枚举转字符串 假如需要把枚举转字符串,可以直接把他进行转换,请看代码 public enum Di { /// <summary> // ...

  5. JSP学习笔记(2)-JSP语法

    1.JSP页面的基本结构 (1)HTML标记符(2)JSP标记(3)变量和方法的声明(4)Java程序片(5)Java表达式 2.变量和方法的声明 成员变量和方法 语法:<%! 变量.方法%&g ...

  6. BZOJ1597: [Usaco2008 Mar]土地购买(dp 斜率优化)

    题意 题目链接 Sol 重新看了一遍斜率优化,感觉又有了一些新的认识. 首先把土地按照\((w, h)\)排序,用单调栈处理出每个位置第向左第一个比他大的位置,显然这中间的元素是没用的 设\(f[i] ...

  7. vue-cli脚手架的安装

    https://github.com/vuejs/vue-cli 官网 使用官方推荐的webpack 条件:node在4.以上,npm在3以上,查看版本号打开cmd输入,node -v     npm ...

  8. Matlab给三维点云添加高斯噪声和随机噪声

    写在前面 在我们进行点云配准一类的模拟实验时,第一步就是对原始点云进行适当的RT变换,并添加一定的噪声,得到测量点云,然后才可以用我们的算法去进行后面的配准操作.在添加噪声这一块,matlab里并没有 ...

  9. intellij idea elixir 插件

    intellij-elixir https://github.com/KronicDeth/intellij-elixir

  10. 【Android】RxJava的使用(三)转换——map、flatMap

    前两篇Android RxJava的使用(一)基本用法.Android RxJava的使用(二)Action介绍了RxJava的基本用法,对Rxjava还不了解的请先看以上两篇.这篇为大家讲解RxJa ...