在service层注入mapper时报空指针的解决

 更新时间:2021年06月17日 16:15:34   作者:陆跑跑已胖哭 �  
这篇文章主要介绍了在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();
}

这个方法主观上感觉不是很好,先这样吧!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 浅谈mybatis中的#和$的区别

    浅谈mybatis中的#和$的区别

    下面小编就为大家带来一篇浅谈mybatis中的#和$的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 详解SpringBoot如何自定义Starter

    详解SpringBoot如何自定义Starter

    Starter是Spring Boot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件)进行自动配置。本文将介绍SpringBoot如何自定义Starter,感兴趣的可以学习一下
    2021-12-12
  • 用SpringBoot Admin监控SpringBoot程序

    用SpringBoot Admin监控SpringBoot程序

    这篇文章主要介绍了用SpringBoot Admin监控SpringBoot程序,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下
    2020-10-10
  • Java观察者模式之实现对象间的一对多依赖

    Java观察者模式之实现对象间的一对多依赖

    这篇文章主要介绍了Java观察者模式之实现对象间的一对多依赖的方法,Java观察者模式是一种行为型设计模式,用于实现对象之间的消息传递和通信,文中有详细的实现步骤和代码示例,,需要的朋友可以参考下
    2023-05-05
  • Java中类的定义与实例化详解

    Java中类的定义与实例化详解

    这篇文章主要给大家介绍了关于Java中类的定义与实例化的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11
  • springboot配置允许跨域访问代码实例

    springboot配置允许跨域访问代码实例

    这篇文章主要介绍了springboot配置允许跨域访问代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Java结构型设计模式之装饰模式详解

    Java结构型设计模式之装饰模式详解

    装饰模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能
    2023-03-03
  • Java 关键字 volatile 的理解与正确使用

    Java 关键字 volatile 的理解与正确使用

    本文主要介绍 volatile 的使用准则,以及使用过程中需注意的地方,感兴趣的朋友一起看看吧
    2017-06-06
  • Mybatis批量修改时出现报错问题解决方案

    Mybatis批量修改时出现报错问题解决方案

    这篇文章主要介绍了Mybatis批量修改时出现报错问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • 浅谈spring方法级参数校验(@Validated)

    浅谈spring方法级参数校验(@Validated)

    这篇文章主要介绍了浅谈spring方法级参数校验(@Validated),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06

最新评论