SpringBoot @AutoWired Null
在调用工具类时,若工具类中含有@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的更多相关文章
- springboot Autowired BeanNotOfRequiredTypeException
现象 org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'xxxxImpl' is expect ...
- Springboot @Autowired 无法注入问题
特别提醒:一定要注意文件结构 WebappApplication 一定要在包的最外层,否则Spring无法对所有的类进行托管,会造成@Autowired 无法注入. 1. 添加工具类获取在 Sprin ...
- 引入 ServletContextListener @Autowired null 解决办法
public class ScheduleController implements ServletContextListener { @Autowired private ScheduleServi ...
- SpringBoot @Autowired中注入静态方法或者静态变量
注:用static去定义一个注入的方法或者配置文件值变量,编译时不会有任何异常,运行时会报空指针. Spring官方不推荐此种方法. 原理: https://www.cnblogs.com/chenf ...
- Spring Autowired错误???
@SpringBootApplicationpublic class TestMqApplication extends SpringBootServletInitializer { @Suppres ...
- 简单模拟IOC容器:为添加了@Autowired的属性赋值(初始值)
创建@Autowired注解 package com.zzj.test; import java.lang.annotation.ElementType; import java.lang.annot ...
- Spring 注解原理(三)@Qualifier @Value
Spring 注解原理(三)@Qualifier @Value Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) 一.Aut ...
- spring之mvc原理分析及简单模拟实现
在之前的一篇博客中已经简单的实现了spring的IOC和DI功能,本文将在之前的基础上实现mvc功能. 一 什么是MVC MVC简单的说就是一种软件实现的设计模式,将整个系统进行分层,M(model ...
- spring之IOC模拟实现
使用Spring框架已经有很长时间了,一直没有仔细的想过框架的设计思想是什么样的,底层到底是怎么实现的,这几天调试程序看了些源码,写下来做个记录.由于Spring框架博大精深,个人理解的难免有不正确的 ...
随机推荐
- 玩转mongodb(三):mongodb项目实战(初战)
说明: 主要功能:对mongodb的集合做增删改查. 项目的运行环境:tomcat6.jdk8. 所用技术:jsp/servlet.前端bootstrap. mongodb:personmap. mo ...
- springMVC对于Controller返回值的可选类型
2018-01-11 对于springMVC处理方法支持支持一系列的返回方式: (1)ModelAndView (2)Model (3)ModelMap (4)Map (5)View (6)Stri ...
- onkeydown事件
<img src="images/hot.jpg" alt="" id="imgId" class="img1"/ ...
- docker改国内官方镜像
如何使用官方镜像 Docker 中国官方镜像加速可通过 registry.docker-cn.com 访问.目前该镜像库只包含流行的公有镜像,而私有镜像仍需要从美国镜像库中拉取. 您可以使用以下命令直 ...
- HTML的map-area的使用
使用背景 在把设置图转成页面的时候,时常会遇到这种情况:一张小图片上有好多个可以点击的小图标,按常规的处理方法是把这一个一个的小图切出来,然后每个加个a标签进行跳转,但是这样会非常的浪费时间,而且会增 ...
- “App.exe 以附加有调试器,但没有将该调试器配置为调试此未经处理的异常。”
目前不清楚原因,但是将项目文件放到C盘就可以正常调试运行. 记录一下
- [PHP] Yaf框架的简单安装使用
PHP开发组鸟哥惠新宸开发的php扩展框架 安装 windows下载扩展:https://pecl.php.net/package/yaf/2.2.9/windows 根据自己的电脑系统和php的版本 ...
- python可视化基础
常用的python可视化工具包是matplotlib,seaborn是在matplotlib基础上做的进一步封装.入坑python可视化,对有些人来说如同望山跑死马,心气上早输了一节.其实学习一门新知 ...
- Recommend ways to overwrite hashCode() in java
Perface In the former chapter, I talk about topics about hashCode, And I will continue to finish the ...
- 采用DTO和DAO对JDBC程序进行进一步优化
采用DTO和DAO对JDBC程序进行进一步优化 DTO:数据传输对象,主要用于远程调用等需要远程调用对象的地方DAO:数据访问对象,主要实现封装数据库的访问,通过它可以把数据库中的表转换成DTO类 引 ...