@Autowired 注入为null

早上写代码的时候遇到@Autowired 注入为空的情况,一开始以为我在方法中存在空的变量导致报空指针异常。后来经过调试发现@Autowired没有进行注入导致变量为空,代码如下:

public class TeamEmergency  implements Emergency{

@Autowired

private TeamEmergency teamEmergency;

}

后来在网上搜索后发现,要能自动注入需要此类在Spring容器里面,而我在调用该类的时候使用new 一个空间,这样导致会将该类移除出Spring 容器中,导致无法注入。

解决办法:1、在spring配置类中加入

<context:component-scan base-package="xxx.xxxx.xxx" />或者直接在配置中声明你当前的类让它在系统初始化时就存在于Spring 容器中。

2、利用Spring 容器中的类比如@Controller,@Service,@component等中声明需要注入的变量,再将该变量传入相应类中。

时间: 2024-12-14 15:16:35

@Autowired 注入为null的相关文章

Java 各级注解及@Autowired注入为null解决办法

1.@controller 控制器 用于标注控制层,相当于struts中的action层. 2.@service 服务层 用于标注服务层,主要用来进行业务的逻辑处理. 3.@repository DAO层(Repo层) 用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件. 4.@Autowired 注入实例 表示被修饰的类需要注入对象,spring会扫描所有被@Autowired标注的类,然后根据 类型 在ioc容器中找到匹配的类注入. 5.@Component (把普通pojo实例

Spring boot下@Autowired 注入为 NULL的问题

问题描述:在springboot项目中集成quartz时,需要使用到一个import org.springframework.scheduling.quartz.SchedulerFactoryBean这个类,并需要自动注入,在测试代码时,发现无法注入到普通.class文件中,后台报错提示:空指针异常.通过断电调试,发现时SchedulerFactoryBean这个类为NULL. 问题解决方案: 1.根据springboot 框架的注入方式检查,@Autowired 注解正确,因为引用的框架本身

欲哭无泪的@Autowired注入对象为NULL

欲哭无泪啊...一下午的时间就这么被浪费了...一个基于spring mvc和spring data jpa的小项目,当我写完一个controller的测试用例后,一运行却报空指针,跟了下是一个dao为null.然后看一下这个dao的代码: @Component @Transactional public class XXService { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired privat

Spring MVC 中@autowired 注入后为null

遇到一个很奇怪的问题就是@Autowired注入失败,首先我去检查了该类是否被spring 容器托管 ,发现相应的类已经添加@controller.@service等注解,说明该类已经为Spring类,不存在非spring无法使用@Autowired注入的问题.在网上也查了很多文章,都没有解决这个问题.后来经过逐个排查发现,同个类中不同的方法注入的变量也不同,用public 修饰的方法可以正常调用,而private调用的方法无法正常调用,值为null.把private 改为public后就能正常

spring自定义类中@AutoWired标识的元素注入为null

最近在做项目的时候,发现程序运行的时候有一个nullpointer exception,一脸懵逼因为感觉程序没什么逻辑.后来发现是因为new出来的component不会自动注入它的元素. 现象:@Component修饰的自定义普通类中@Autowired属性为null 原因:如果是通过new实例化的对象,脱离了Spring的管理,所以获取不到Spring注解的属性值. 在新线程中也会存在注解获取不到Spring管理的Bean,也是因为new出来的线程,脱离了Spring容器 我在实际开发中遇到有

springboot中如果使用了@Autowired注入了bean,则这个类也要为spring bean,new出来注入的bean为null

https://blog.csdn.net/Mr_Runner/article/details/83684088 问题:new出来的实例中含有@Autowired注入时,注入的Bean为null: 解决方法:不要用new的方式实例化,也采用注解的方式,在需要new的实例类上加@Component注解,通过注入的方式使用实例化类: 原因:@Autowired注入时是将类交给Springboot管理,而new出来的实例脱离了Springboot的管理,两个东西不在一个管理者管理下,所以没法联系在一起

new出来的对象无法调用@Autowired注入的Spring Bean

@Autowired注入Spring Bean,则当前类必须也是Spring Bean才能调用它,不能用new xxx()来获得对象,这种方式获得的对象无法调用@Autowired注入的Bean. 1.类1,加入Spring Pool public class PersonServiceImpl implements PersonService{ public void save(){ System.out.println("This is save for test spring")

Netty handler处理类无法使用@Autowired注入bean的解决方法

问题由来: 公司有个项目用到netty作为websocket的实现,最近打算部署双机,这使得原来保存在内存中的Channel信息不再可行,需要保存在redis中,改造过程中发现通过@Autowired注入进来的JedisClient类无法使用,外部表现为jedisClient对象为null 解决过程: 1.一开始以为是spring配置引入先后顺序的问题,导致netty启动的时候jedisClient还没实例化好,调整后发现问题依旧 2.之后百度发现有不少人遇到这个问题,有回答说netty中无法使

关于工具类静态方法调用@Autowired注入的service类问题

@Component //此处注解不能省却(0) 1 public class NtClient { 2 /** 3 * 日志 4 */ 5 private static String clazzName = NtClient.class.getName(); 6 /** 7 * 此处是要使用的service需要spring注入(1) 8 */ 9 @Autowired 10 private NotifyTimeService notifyTimeService; 11 private stat