巧克力味的鱼 2022-06-13 17:14 采纳率: 100%
浏览 188
已结题

在使用springboot连接mysql时报错java.lang.NullPointerException: null?

在使用springboot连接mysql时报错java.lang.NullPointerException: null

@lombok.Data
public class Data {
    private String SvrId;
    private int LocalId;
    private String PrefixId;
    private String createtime;
    private int msgtype;
    private int subtype;
    private int isSender;
    private String content;
    private String from_wxid;
    private String from_name;
    private String final_from_wxid;
    private String final_from_name;
    private String to_wxid;
    private String to_name;
    private String filepath;

}
------------------------------------------------------------------------------------------------------------------------------------
import java.util.List;

public interface DataOperation {
    //    添加一条数据
    public void addData(Data data);
    //    删除一条数据
    public void deleteData(Data data);
    //    修改一条数据
    public void updateData(Data data);
    //    查询所有数据
    public List<Data> selectAllData();
    //    查询单个数据
    public Data selectLocalId(int LocalId);
}
------------------------------------------------------------------------------------------------------------------------------------
package com.example.springtest0609.dao;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public class DataOperationImp implements DataOperation{
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public void addData(Data data) {

    }

    @Override
    public void deleteData(Data data) {

    }

    @Override
    public void updateData(Data data) {

    }

    @Override
    public List<Data> selectAllData() {
        return null;
    }

    @Override
    public Data selectLocalId(int LocalId) {
        System.out.println(jdbcTemplate.queryForMap("select * from Data where LocalId=70992"));
        Data data=new Data();
        data.setLocalId(12312);
        return data;
    }
}

在Test里运行是正常的

import com.example.springtest0609.dao.Data;
import com.example.springtest0609.dao.DataOperation;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class Springtest0609ApplicationTests {
    @Autowired
    private DataOperation dataOperation;

    @Test
    void contextLoads() {
        //        查询1001学生的信息
        Data student_test=dataOperation.selectLocalId(123);
        System.out.println(student_test);
    }

}

但是在方法里使用会出现以下报错,无法直接调用


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.taskadapter.redmineapi.RedmineException;
import dao.Data;
import dao.DataOperation;
import lombok.extern.slf4j.Slf4j;
import org.hyperic.sigar.SigarException;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RestController;
import service.*;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Calendar;

import static service.XiaomiSport.XiaomiSport;

@Slf4j
@Controller
public class MyWebSocketClient extends WebSocketClient {
    public long startTime = System.currentTimeMillis(); // 获取开始时间
    @Autowired
    private DataOperation dataOperation;

    public MyWebSocketClient() throws URISyntaxException {
        super(new URI("ws://127.0.0.1:2023"));
    }

    @Override
    public void onOpen(ServerHandshake serverHandshake) {
        log.info("打开websocket连接");
    }

    @Override
    public void onMessage(String s) {
        try {
            Data student_test=dataOperation.selectLocalId(123);
            System.out.println(student_test);
        } catch (SigarException | IOException | RedmineException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onClose(int i, String s, boolean b) {
        log.error("连接关闭{}", s);
    }

    @Override
    public void onError(Exception e) {
        log.error("连接错误{}", e);
    }

    //发送消息
    public void sendMessage(String message) {
        this.send(message);
        log.info("on reply for:{}", message);
    }
java.lang.NullPointerException: null
    at controller.MyWebSocketClient.ReceiveMessage(MyWebSocketClient.java:71)
    at controller.MyWebSocketClient.onMessage(MyWebSocketClient.java:43)
    at org.java_websocket.client.WebSocketClient.onWebsocketMessage(WebSocketClient.java:462)
    at org.java_websocket.drafts.Draft_6455.processFrame(Draft_6455.java:696)
    at org.java_websocket.WebSocketImpl.decodeFrames(WebSocketImpl.java:367)
    at org.java_websocket.WebSocketImpl.decode(WebSocketImpl.java:212)
    at org.java_websocket.client.WebSocketClient.run(WebSocketClient.java:389)
    at java.lang.Thread.run(Thread.java:748)

我想要直接在方法里调用,自动查询数据/插入数据,麻烦帮忙看看

  • 写回答

1条回答 默认 最新

  • 皮蛋不吃粥 2022-06-13 17:30
    关注

    因为websocket是多例所以,每次创建进来的bean拿不到注入的单例bean,可以写一个类实现ApplicationContextAware 接口 通过上下文获取你的bean。
    不懂可以问我

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月23日
  • 已采纳回答 6月15日
  • 修改了问题 6月13日
  • 修改了问题 6月13日
  • 展开全部

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同