spring controller层引用service报空指针异常nullpointExceptio问题
目录
- 调用controller报空指针有两种情况
- 没有加载到spring容器中
- Controller类下的方法private私有了
- controller层引用service层报空指针问题
调用controller报空指针有两种情况
- 1、 service 或者mapper 没有加载到spring容器中 ,引用时候肯定报空指针
- 2、 service加载到spring容器中了, 但是controller中定义的方法为private,私有方法被接口访问时候,因为private作用域的问题,无法获取该方法,报空指针
没有加载到spring容器中
1、controller层中的service没有注入,(@Resource @Autowired)
2、service层没有使用@Service修饰
3、Application启动类中,没有使用定义需要加载到容器中的包
该包中包含需要加载进去的各种bean ,使用@ComponentScan是指定需要加载的bean所在包,而@SpringbootApplication其实已经包含了该注解
4、 常见报空指针的场景是,用户自定义了Util下的类,然后使用@Service引用了定义的Service,但是报空指针。 这种是因为,该Util类,没有加载到Spring容器中,需要使用@Component注解 ,同时,这个util类需要使用@Resource引用到Spring容器中,这样该util类和service才会一同作用到Spring容器中。
controller层使用@RestController注释,在启动时候会因为@componentScan的原因,加载进容器中,总结一点,要使用该bean,该bean需加载进Spring容器中。
Controller类下的方法private私有了
这种是引用java 修饰符作用域的问题,private修饰的方法只能在该类中使用。
其实你使用Idea时候,在controller中定义private方法时候, 编辑器会显示
Idea已经告诉你,这种的话没有被引用,
而将方法public后:服务启动后, 该处会显示正常不会报灰色
插一句:idea是真的牛皮的编辑器
controller层引用service层报空指针问题
应用service层时
private Manager manager;
少加了@Autowired
添加后,空指针报错解决
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
解决spring @ControllerAdvice处理异常无法正确匹配自定义异常
首先说结论,使用@ControllerAdvice配合@ExceptionHandler处理全局controller的异常时,如果想要正确匹配自己的自定义异常,需要在controller的方法上抛出相应的自定义异常,或者自定义异常继承RuntimeException类. 问题描述: 1.在使用@ControllerAdvice配合@ExceptionHandler处理全局异常时,自定义了一个AppException(extends Exception),由于有些全局的参数需要统一验证,所以在所有
-
解决SpringMvc中普通类注入Service为null的问题
SpringMvc中普通类注入Service为null 场景: 使用Quartz定时器时,普通的java类需要注入spring的service类,在调用时报错! 解决方式: /** * 定时获取课程的service */ @Autowired protected QuartzGetCourseService quartzGetCourseService = (QuartzGetCourseService) SpringContextUtil .getBean("quartzGetCourseSe
-
springboot 如何解决static调用service为null
springboot static调用service为null @PostConstruct注解好多人以为是Spring提供的.其实是Java自己的注解. Java中该注解的说明: @PostConstruct该注解被用来修饰一个非静态的void()方法.被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次.PostConstruct在构造函数之后执行,init()方法之前执行. 通常我们会是在Spring框架中使用到@PostConstruc
-
在service层注入mapper时报空指针的解决
在service层注入mapper时报空指针 今天又遇到一个极其刁钻的问题,废话不多说先上代码,测试单元 @RunWith(SpringRunner.class) @SpringBootTest(classes = SpringBoot_Run.class) @ContextConfiguration(locations = { "classpath:mybatis/mappers/RevMapper.xml" }) public class TestTransaction { @Au
-
spring controller层引用service报空指针异常nullpointExceptio问题
目录 调用controller报空指针有两种情况 没有加载到spring容器中 Controller类下的方法private私有了 controller层引用service层报空指针问题 调用controller报空指针有两种情况 1. service 或者mapper 没有加载到spring容器中 ,引用时候肯定报空指针 2. service加载到spring容器中了, 但是controller中定义的方法为private,私有方法被接口访问时候,因为private作用域的问题,无法获取该方法
-
关于Controller层和Service层的类报错问题及解决方案
目录 Controller层和Service层的类报错 Controller层和Service层的作用 1.在controller和service里都写那些代码? 2.在整个项目中什么时候加异常?异常怎么处理? Controller层和Service层的类报错 当出现以下这种情况的时候,可以看看pom.xml文件中是否少了jar包. 当我出现这种情况的时候,我去看pom.xml包发现,如不其然我少了一个jar包 这就是我少了的那个jar包(spring-web),把这个加上之后就可以了. <!-
-
springboot如何解决非controller类引用service的问题
目录 解决非controller类引用service问题 解决办法 总的代码如下 在非controller层如何调用service层服务 通过init方法进行服务注入 调用方法形式如下 解决非controller类引用service问题 项目中遇到需要采用socket通信机制,由于这个方法没有写在控制类里面,调用service类的时候老是报java.lang.NullPointerException错误 解决办法 1.首先将@Autowired注解注入Service或者Mapper接口 @Au
-
SpringBoot在自定义类中调用service层等Spring其他层操作
背景: 做了一个TCP服务器来接入智能设备,然后需要将设备实时发送的定位等关键信息存储到数据库. 为了考虑将来可能对外提供rest接口,采用将TCP服务器集成到SpringBoot框架,当然,也是为了能最快利用mybatis框架实现数据访问,然后依次解决了如何启动,如何注销等各种问题,然后在TCP服务器消息处理时,需要写数据库,直接调用DAO层,编译报错. 改为调用Service层,编译正常,运行到调用的地方,报空指针异常,跟踪到异常位置,发现service为空,也就是按照之前controlle
-
Spring main方法中如何调用Dao层和Service层的方法
目录 Spring main方法调用Dao层和Service层的方法 如何在普通类中直接访问service层或dao层 第一种方案 第二种方案 Spring main方法调用Dao层和Service层的方法 在web环境中,一般serviceImpl中的dao之类的数据库连接都由容器启动的时候创建好了,不会报错. 但是在main中,没有这个环境,所以需要获取环境: ApplicationContext ctx = new FileSystemXmlApplicationContext("src/
-
Spring Boot从Controller层进行单元测试的实现
单元测试是程序员对代码的自测,一般公司都会严格要求单元测试,这是对自己代码的负责,也是对代码的敬畏. 一般单元测试都是测试Service层,下面我将演示从Controller层进行单元测试. 无参Controller单元测试示例: package com.pingan.bloan.genesis.controller.base; import org.junit.After; import org.junit.Before; import org.junit.runner.RunWith; im
-
关于MVC的dao层、service层和controller层详解
目录 MVC的dao层.service层和controller层 1.dao层 2.service层 3.controller层 4.view层 5.它们之间的关系 关于dao层/mapper层的一些笔记 1.BaseMapper 2.@mapper MVC的dao层.service层和controller层 1.dao层 dao层主要做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,dao层的设计首先是设计dao层的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可以
-
spring配置不扫描service层的原因解答
目录 spring配置自动扫描原理介绍 自动扫描组件的使用 细节问题总结 spring配置不扫描service层原因 我将contoller给springmvc进行扫描,然后其余所有交给spring扫描 然后发现service层的EmployeeService并没有扫描到出现以下问题 Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘spr
-
关于Spring MVC在Controller层中注入request的坑详解
前言 记一次为了节省代码没有在方法体中声明HttpServletRequest,而用autowire直接注入所钻的坑 结论:给心急的人. 直接在Controller的成员变量上使用@Autowire声明HttpServletRequest,这是线程安全的! @Controller public class TestController{ @Autowire HttpServletRequest request; @RequestMapping("/") public void test
-
springmvc 中dao层和service层的区别说明
springmvc dao层和service层的区别 首先解释面上意思,service是业务层,dao是数据访问层 这个问题我曾经也有过,记得以前刚学编程的时候,都是在service里直接调用dao,service里面就new一个dao类对象,调用,其他有意义的事没做,也不明白有这个有什么用,参加工作久了以后就会知道,业务才是工作中的重中之重. 我们都知道,标准主流现在的编程方式都是采用MVC综合设计模式,MVC本身不属于设计模式的一种,它描述的是一种结构,最终目的达到解耦,解耦说的意思是你更改
随机推荐
- JS手机端touch事件计算滑动距离的方法示例
- VB实现鼠标绘图实例代码
- 基于PHP实现商品成交时发送短信功能
- yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
- JS基于FileSystemObject创建一个指定路径的TXT文本文件
- C#装箱和拆箱原理详解
- mysql中替代null的IFNULL()与COALESCE()函数详解
- php结合ajax实现手机发红包的案例
- IE/FireFox具备兼容性的拖动代码
- jquery实现的一个文章自定义分段显示功能
- mysql提示[Warning] Invalid (old?) table or database name问题的解决方法
- Javascript & DHTML 实例编程(教程)DOM基础和基本API
- jacascript DOM节点——元素节点、属性节点、文本节点
- java中Class.forName的作用浅谈
- 我教你学之注册表系统外观修改实例(三)
- 如何为asp.net core添加protobuf支持详解
- Android APP编写简单答题器
- 深入Spring Boot实现对Fat Jar jsp的支持
- Java 获取Html文本中的img标签下src中的内容方法
- mysql 5.7.17 以及workbench安装配置图文教程