java实现在普通类中注入service或mapper

普通类中注入service或mapper

1、类加@Component注解

2、注入需要引入的service

  @Autowired
  private UserService userService;

3、建静态文件

   private static UserService users;

4、初始化方法

  @PostConstruct
  public void init() {
      users= userService;
  }

5、调用

 users.selectUser(user);

mapper为null的情况

今天开发接口的时候,因为一时马虎,导致被一个小bug拖拉了很久,在这里记录一下

今天服务器挂了,数据库链接不了。只能靠着理论写接口,之后发现方法调用后查询为空,并且抛出了异常。在Debug环境下,打了断点后发现step只走到了Xxxmapper.xx();就停止了。查看mapper对象发现为空。

——开始调查:

@SpringBootApplication
@EnableSwagger2
@EnableSwaggerBootstrapUI
@EnableFeignClients(basePackages = {"XXXX.XXXX.api"})
@ComponentScan(value = {"XXXXX.XXXX.api.config", "com.XXXX.gateway.XXX", "com.XXXXX.XXXX.auth"})
@MapperScan("com.XXXX.XXXX.XXX.mapper")
@EnableScheduling
public class IotGateWayParkServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(IotGateWayParkServiceApplication.class);
    }
}

MapperScan可以导致这个问题。但是我有,所以排除。

——二查

public class impl{
 @Autowired
 private XxxMapper mapper;
}

@Autowired 也有,有时候idea还会因为这个报红,这个可以通过加上@Resource来解决这个强迫症,但是@Autowired里面本身包含@Resource,加不加都无所谓。给强迫症用的。但是这里我没犯错误,所以排除。

@Mapper
@Respository
public interfaceXxxMapper{

}

@Mapper 和 @Respository 我都有。所以排除。

——马虎是啥:

    @Autowired
    private IotGatewayParkInfoService service;

一般在controller层都是这么使用的。但是 我偏偏手贱用了new IotGatewayParkInfoService();所以下场你们也知道了

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

(0)

相关推荐

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

    在service层注入mapper时报空指针 今天又遇到一个极其刁钻的问题,废话不多说先上代码,测试单元 @RunWith(SpringRunner.class) @SpringBootTest(classes = SpringBoot_Run.class) @ContextConfiguration(locations = { "classpath:mybatis/mappers/RevMapper.xml" }) public class TestTransaction { @Au

  • mapper接口注入两种方式详解

    这篇文章主要介绍了mapper接口注入两种方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.使用模板方式: <!--使用模板类实现mybatis --> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg name="sqlSessionFacto

  • 关于spring boot中几种注入方法的一些个人看法

    前言 最近在知乎上面看到一篇关于程序员面试的问题,面试官问我们一般有几种注入的方法,这几种注入的方法分别在什么时候运用比合理,当时我看到这个时候懵逼了,由于我自己也是刚刚接触springboot不久,所以就自己在平时运用的上面总结了一些知识点常用的几种springboot的注入方法,由于我是一个小萌新,所只要是能够起道注入的方法的注解我都列出来,有可能会有错,希望大家能够及时提出来我来解决: @Autowired @Resource @Component @Configuration @Qual

  • 详解关于mybatis-plus中Service和Mapper的分析

    在后端开发过程中,如果有用到mybatis-plus,肯定会发现在其内部存在着两种数据库操作接口,Iservice和BaseMapper,如果只是用增删改查会发现两者的功能是一致的,除了方法名称有所不同,其他的基本相似.对此,我颇为好奇,便打开两个接口的源码进行对比. 先演示一下基本开发中的继承关系,手动创建的Service继承于ServiceImpl,并加载自己创建的Mapper @Service public class RestDeptService extends ServiceImpl

  • 详解Mybatis通用Mapper介绍与使用

    使用Mybatis的开发者,大多数都会遇到一个问题,就是要写大量的SQL在xml文件中,除了特殊的业务逻辑SQL之外,还有大量结构类似的增删改查SQL.而且,当数据库表结构改动时,对应的所有SQL以及实体类都需要更改.这工作量和效率的影响或许就是区别增删改查程序员和真正程序员的屏障.这时,通用Mapper便应运而生-- 什么是通用Mapper 通用Mapper就是为了解决单表增删改查,基于Mybatis的插件.开发人员不需要编写SQL,不需要在DAO中增加方法,只要写好实体类,就能支持相应的增删

  • java实现在普通类中注入service或mapper

    普通类中注入service或mapper 1.类加@Component注解 2.注入需要引入的service @Autowired private UserService userService; 3.建静态文件 private static UserService users; 4.初始化方法 @PostConstruct public void init() { users= userService; } 5.调用 users.selectUser(user); mapper为null的情况

  • 如何在ASP.NET Core 的任意类中注入Configuration

    遇到的问题 我已经通读了 MSDN 上关于 Configuration 的相关内容,文档说可实现在 application 的任意位置访问 Configuration . 下面是 Startup.cs 的模板代码. public class Startup {     public Startup(IHostingEnvironment env)     {         var builder = new ConfigurationBuilder()             .SetBase

  • java Swing JFrame框架类中setDefaultCloseOperation的参数含义与用法示例

    本文实例讲述了java Swing JFrame框架类中setDefaultCloseOperation的参数含义与用法.分享给大家供大家参考,具体如下: 先来看一个实例(一个空的java窗口): package awtDemo; import javax.swing.*; //使用Swing类,必须引入Swing包 public class JFrameDemo1{ public static void main( String args[]) { //定义一个窗体对象f,窗体名称为"一个简单

  • Springboot 在普通类型注入Service或mapper

    目录 Springboot 在普通类型注入Service或mapper 1.由于之前都是通过controller调用service层来实现访问 2.在拿到数据之后,掉service时出现空指针 springboot 普通类怎么使用注入 Springboot 在普通类型注入Service或mapper 最近遇到一个难题(大佬可能感觉这太简单了把),对于我这样的小白来说,确实有些头疼. 接下来说一下我遇到的问题,在spring boot中创建了一个UDP客户端,用于监听UDP服务端发送到数据.在实现

  • SpringBoot在自定义类中调用service层等Spring其他层操作

    背景: 做了一个TCP服务器来接入智能设备,然后需要将设备实时发送的定位等关键信息存储到数据库. 为了考虑将来可能对外提供rest接口,采用将TCP服务器集成到SpringBoot框架,当然,也是为了能最快利用mybatis框架实现数据访问,然后依次解决了如何启动,如何注销等各种问题,然后在TCP服务器消息处理时,需要写数据库,直接调用DAO层,编译报错. 改为调用Service层,编译正常,运行到调用的地方,报空指针异常,跟踪到异常位置,发现service为空,也就是按照之前controlle

  • 往DAO类中注入@PersistenceContext和@Resource的区别详解

    目录 DAO类注入@PersistenceContext和@Resource区别 @PersistenceContext @Resource JPA中为什么EntityManager的注解要用@PersistenceContext 根据上面的描述,总结如下 DAO类注入@PersistenceContext和@Resource区别 @PersistenceContext private EntityManager em; 注入的是实体管理器,执行持久化操作的,需要配置文件persistence.

  • springboot实现在工具类(util)中调用注入service层方法

    一.新建BeanUtil类 import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeansException; import org.springframework.beans.factory.DisposableBean; import org.springframework.context.ApplicationContext; import org.springframework.context.Applic

  • java静态工具类注入service出现NullPointerException异常处理

    目录 一般我们在controller层调用service时,只需要使用@Autowired注解即可,例如如下代码我们经常看到: @RestController @RequestMapping("business") public class BizResourceController { @Autowired private BusinessService businessService; @RequestMapping(path = "/queryYearList"

  • Java实现普通类注入service对象

    普通类注入service对象 找了很多办法,无论是加@Component还是编写工具类实现ApplicationContextAware,始终为null. 最后使用这两行代码解决: WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); DailySurveyService service = (DailySurveyService) context.getBean("dailySurvey

  • 如何在Netty中注解使用Service或者Mapper

    目录 Netty注解使用Service或Mapper Handler Server 创建Server 二次修订 Netty handler注入service为空 注入方式 Netty注解使用Service或Mapper SpringBoot搭配Netty使用,在Handler中注解使用Service/Mapper 一直 为null.起初使用 SpringBoot启动类继承ApplicationContextAware,再写一个静态方法获取Bean来解决. 放在服务器上跑了几个小时就出现了问题,好

随机推荐