在调用工具类时,若工具类中含有@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. Ubuntu18.0.4查看显示器型号

    在官网https://launchpad.net/ubuntu/+source/xresprobe下载二进制包,apt-get目前无法安装xresprobe 输入命令sudo ddcprobe 得到如 ...

  2. Beta阶段——Scrum 冲刺博客第四天

    一.当天站立式会议照片一张 二.每个人的工作 (有work item 的ID),并将其记录在码云项目管理中 昨天已完成的工作 完成对question界面的制作,完善随机出题界面,能够流畅的切换下一题与 ...

  3. android开发学习笔记系列(1)-android起航

    前言 在学习安卓的过程中,我觉得非常有必要将自己所学的东西进行整理,因为每每当我知道我应该是如何去实现功能的时候,有许多细节问题我总是会遗漏,因此我也萌生了写一系列博客来描述自己学习的路线,让我的an ...

  4. Sass进阶之路,之一(基础篇)

    Sass 学习Sass之前,应该要知道css预处理器这个东西,css预处理器是什么呢? Css预处理器定义了一种新的语言将Css作为目标生成文件,然后开发者就只要使用这种语言进行编码工作了.预处理器通 ...

  5. Golang 知识图谱

  6. iOS 关于Xcode上的Other linker flags

    Targets选项下有Other linker flags的设置,用来填写XCode的链接器参数,如:-ObjC -all_load -force_load等.还记得我们在学习C程序的时候,从C代码到 ...

  7. Service生命周期以及应用

    Service概念及用途: Android中的服务,它与Activity不同,它是不能与用户交互的,不能自己启动的,运行在后台的程序,如果我们退出应用时,Service进程并没有结束,它仍然在后台运行 ...

  8. sqlserver 获取数据库、表和字段相关信息

    --获取指定服务器上的所有数据库 SELECT Name FROM Master..SysDatabases ORDER BY Name --获取指定数据库下所有表 SELECT Name FROM ...

  9. 简单侧边栏js效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. OTSU算法学习 OTSU公式证明

    OTSU算法学习   OTSU公式证明 1 otsu的公式如下,如果当前阈值为t, w0 前景点所占比例 w1 = 1- w0 背景点所占比例 u0 = 前景灰度均值 u1 = 背景灰度均值 u = ...