在service层注入mapper时报空指针的解决
作者:陆跑跑已胖哭 � 发布时间:2021-09-07 03:39:21
标签:service,mapper,空指针
在service层注入mapper时报空指针
今天又遇到一个极其刁钻的问题,废话不多说先上代码,测试单元
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringBoot_Run.class)
@ContextConfiguration(locations = { "classpath:mybatis/mappers/RevMapper.xml" })
public class TestTransaction {
@Autowired
RevMapper remapper;
@Test
public void testInsert() {
ReData data = new ReData();
data.setReTime(new Date()).setSeID("fdewfcdsfdssdfdsf").setSendDate(new Date());
remapper.insertObject(data);
}
然后是service代码
public class ReService {
@Autowired
private RevMapper reMapper;
private Socket socket=null;
private BufferedReader br=null;
private PrintWriter pw=null;
public void recevice() {
try {
//创建服务器,并开放3081端口
ServerSocket serv
RevMapper 类在测试的时候注入的好好地,为毛在service中就是空,一直空,空空空!!!
网上说的@mapperScan还有@mapper的注解我都加了一遍,这是为毛!!!!!
在博览全部大神的CSDN中,我发现大家都是抄过来抄过去,小弟佩服!!
解决!!!
因为我在启动类是这样写的
@SpringBootApplication(exclude=DataSourceAutoConfiguration.class)
@MapperScan(“cn.yungtay.mapper”)
public class SpringBoot_Run {
public static void main(String[] args) {
SpringApplication.run(SpringBoot_Run.class, args);
ReMapper re=new ReMapper();
re.receive;
}
}
厉害的欧巴们不要喷,我第一反应是这样的!!
问题出来了,当一个对象是new出来的时候,他是不交给spring管理的,所以对象根本注入不进去,null是理所当然的
第二个问题,你想一个方法随着主启动类而启动,你可以这么干
@Service
public class ReService implements ApplicationRunner{
@Autowired
private RevMapper reMapper;
private Socket socket=null;
。。。。。。。。。。。。。
@Override
public void run(ApplicationArguments args) throws Exception {
// TODO Auto-generated method stub
你所需要启动的方法XXXXXXXX
}
感觉自己又智慧了一点!
springmvc普通类(非control,service)注入mapper为null
在给项目写一个定时器的时候,需要用到注入mapper进行数据库操作,用像serviceimpl里的注入
@Autowired
UserMapper usermapper;
无效,debug后发现usemapper为null,说明没有注入成功
后看到其他文章知道了new出来的thread不在spring的容器中,所以无法注入成功,获得bean
但是按照他的方法依旧为null,他的想法是主动注入bean,应该是对的。
不过我这个可能有点特殊,于是最后只能使用终极 *
ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
usermapper = (UserMapper) ac.getBean("UserMapper");
usermapper.deleteAllCookies();
不要忘了给mapper个名字,例
@Repository(value="UserMapper")
public interface UserMapper {
public List<User> selectByExample(@Param("username1")String username,@Param("password")String password);
public int insertToken(@Param("username1")String username,@Param("token")String token);
public String checkToken(String token);
public int logout(@Param("username1")String username,@Param("token")String token);
public int deleteAllCookies();
}
这个方法主观上感觉不是很好,先这样吧!
来源:https://blog.csdn.net/ProgrammerAshley/article/details/97637109


猜你喜欢
- 本文实例为大家分享了Android实现双曲线折线图的具体代码,供大家参考,具体内容如下先看一下效果图1.先下载jar包 mpandroidc
- 前言前面我们学习完了设计模式,在其中我们有了解到原型模式。这里涉及到了克隆自身对象。那么也就是对对象进行拷贝。这里就涉及到了这么一个概念。深
- 导入表格的主要思路就是:首先从前端页面上传文件,这里先区分一下Multipartfile和File,前者代表的是HTML中form data
- 有段时间没有写博客了,也在努力的从传统单机开发向分布式系统过度,所以再次做一些笔记,以方便日后查看。直接进入正题吧,今天记录spring-b
- 注意:要先导入javamail的mail.jar包。以下三段代码是我的全部代码,朋友们如果想用,直接复制即可。第一个类:MailSender
- 暂停和恢复Activity(Pausing and Resuming an Activity)一个Activity是一个应用程序组件,提供一
- 1. 内部类很多时候我们创建类的对象的时候并不需要使用很多次,每次只使用一次,这个时候我们就可以使用内部类了1.1 内部类概述内部类就是在一
- 01.点明观点 C#中,非托管资源使用之后必须释放,而using()是使用非托管资源的最佳方式,可以确保资源在代码块结束之后被正确
- 判断有无虚拟按键(导航栏)现在很大一部分手机没有虚拟按键,一部分有。我们在做适配的时候可能会用到这方面的知识。例如:屏幕填充整个屏幕的时候,
- JVM运行原理首先从“.java”代码文件,编译成“.class”字节码文件,然后类加载器将“.class”字节码文件中的类给加载带JVM中
- 字符串采用unicode编码的方式时,计算字符串长度的方法找出UNICODE编码中的汉字的代表的范围“\u4E00” 到“\u9FBB”之间
- 在开发中当程序发生ANR或者异常,我们会将信息存在本地,然后上传服务器,这样可以实时去发现问题修改问题。那我们需要获取文件之后需要对文件进行
- 顺序语句顺序顾名思义就是程序自上而下执行public class User { public static voi
- 最近在做项目的时候有用到对两个集合中的元素进行对比求其交集的情况,因为涉及到的数据量比较大,所以在进行求两个集合中元素交集的时候,就应该考虑
- UI编程通常都会伴随事件处理,Android也不例外,它提供了两种方式的事件处理:基于回调的事件处理和基于 * 的事件处理。对于基于 * 的
- 本文实例为大家分享了android实现简单时钟的具体代码,供大家参考,具体内容如下attrs定义如下<?xml version=&qu
- ☆代码示例:代码块语法遵循标准markdown代码,例如:package cas;import org.htmlparser.Node;im
- Bean Searcher 号称 任何复杂的查询都可以 一行代码搞定,但 Mybatis Plus 似乎也有类似的动态查询功能,它们有怎样的
- 前言在之前的Spring Boot基础教程系列中,已经通过《Spring Boot中使用@Async实现异步调用》一文介绍过如何使用@Asy
- 概述公司的spring boot项目不是使用默认的logback作为日志框架,而是log4j2, 主要原因是logback出现过一个生产问题