情况描述

有个Server类,成员变量是spring中自动管理的bean类对象

public class Server {
@Autowired
private CommandMapper commandMapper;
@Autowired
private DevicesMapper devicesMapper;
...

原本我是打算在spring boot运行过程中,后台自动开启这个服务(在application类中的main方法中开启)

public class NongyeApplication {

    /*@Autowired
private static CommandMapper commandMapper; @Autowired
private static DevicesMapper devicesMapper;*/ public static void main(String[] args) { SpringApplication.run(NongyeApplication.class, args);
new Server().start();
} }

但是测试过程中,发现Server类中的那些自动装载的bean类对象为null,原因是因为我使用了new关键字类创建对象

解决方法

spring boot中,有个接口ApplicationRunner,当spring boot应用启动完毕之后会回调此接口,可以使用此接口自动完成某些任务。

所以,我们想要开启服务的话,可以实现此接口。

我们得把Server类标记注解@Server

@Service
public class Server {
@Autowired
private CommandMapper commandMapper;
@Autowired
private DevicesMapper devicesMapper;
...

之后写一个类,去实现ApplicationRunner接口,这样便成功解决了。

@Component
public class TcpService implements ApplicationRunner {
@Autowired
private Server server; @Override
public void run(ApplicationArguments args) throws Exception {
server.start();
}
}

spring boot 自动装载对象为null问题的解决的更多相关文章

  1. Spring Boot自动配置如何工作

    通过使用Mongo和MySQL DB实现的示例,深入了解Spring Boot的@Conditional注释世界. 在我以前的文章“为什么选择Spring Boot?”中,我们讨论了如何创建Sprin ...

  2. Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件

    本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 Starter 组件 摘录:读书是读完这些文字还要好好用心去想想,写书也一样,做任何事也一样 图 2 第二章目录结构图 第 2 章 Spr ...

  3. Spring Boot 自动装配原理

    Spring Boot 自动装配原理 Spring Boot 在启动之前还有一系列的准备工作,比如:推断 web 应用类型,设置初始化器,设置监听器,启动各种监听器,准备环境,创建 applicati ...

  4. Spring Boot自动配置原理懂后轻松写一个自己的starter

    目前很多Spring项目的开发都会直接用到Spring Boot.因为Spring原生开发需要加太多的配置,而使用Spring Boot开发很容易上手,只需遵循Spring Boot开发的约定就行了, ...

  5. Spring Boot自动配置与Spring 条件化配置

    SpringBoot自动配置 SpringBoot的自动配置是一个运行时(应用程序启动时)的过程,简化开发时间,无需浪费时间讨论具体的Spring配置,只需考虑如何利用SpringBoot的自动配置即 ...

  6. Spring Boot自动配置原理、实战

    Spring Boot自动配置原理 Spring Boot的自动配置注解是@EnableAutoConfiguration, 从上面的@Import的类可以找到下面自动加载自动配置的映射. org.s ...

  7. Spring Boot自动配置

    Spring Boot自动配置原理 Spring Boot的自动配置注解是@EnableAutoConfiguration, 从上面的@Import的类可以找到下面自动加载自动配置的映射. org.s ...

  8. Spring boot Jpa添加对象字段使用数据库默认值

    Spring boot Jpa添加对象字段使用数据库默认值 jpa做持久层框架,项目中数据库字段有默认值和非空约束,这样在保存对象是必须保存一个完整的对象,但在开发中我们往往只是先保存部分特殊的字段其 ...

  9. Spring Boot 自动装配(二)

    目录 目录 前言 1.起源 2.Spring Boot 自动装配实现 2.1.@EnableAutoConfiguration 实现 2.1.1. 获取默认包扫描路径 2.1.2.获取自动装配的组件 ...

  10. Spring Boot自动配置原理(转)

    第3章 Spring Boot自动配置原理 3.1 SpringBoot的核心组件模块 首先,我们来简单统计一下SpringBoot核心工程的源码java文件数量: 我们cd到spring-boot- ...

随机推荐

  1. MySQL8.0配置my.cnf

    环境 centos7.9 mysql  Ver 8.0.32 因为是源码安装的MySQL8.0.32,查了一下MySQL 8.0之后源码中不包含my.cnf文件和my-default.cnf文件了. ...

  2. VMware全版本下载工具

    有很多小伙伴想下载适合自己的虚拟机版本,但是官网全是英文看不懂 百度找的还怕带病毒 这里栀煜单独制作了个工具,内置vm9 10 11 12 14 15 16 17版本的虚拟机下载地址,都是官方版 不是 ...

  3. 即截即贴,推荐一个提升截图对比效率的工具Snipaste

    壹 ❀ 超好用的snipaste 你的图片是用座机(锁孔)拍的吗?我们常常会这样嘲讽那些不会使用截图工具,硬要用手机拍出高斯模糊特效的群友(对个焦怎么就这么难= =),其实不管是日常生活还是工作,QQ ...

  4. 基于 log4j2 插件实现统一日志脱敏,性能远超正则替换

    前言 金融用户敏感数据如何优雅地实现脱敏? 日志脱敏之后,无法根据信息快速定位怎么办? 经过了这两篇文章之后,我们对日志脱敏应该有了一定的理解. 但是实际项目中,我们遇到的情况往往更加复杂: 1)项目 ...

  5. Java Socket编程系列(四)开发支持多客户端访问的Server

    例子来自Java官方教程,稍作调整. 上一篇介绍了单客户端访问的Server实现,这一篇实现的是多个客户端请求服务端,根据服务端提示进行一系列操作. 协议类(和系列三一样没变): package co ...

  6. weblogic CVE-2024-20931分析

    weblogic 12.2.1.4.0安装 我的环境:ubuntu 22.04 + weblogic 12.2.1.4.0 + jdk8(注:weblogic不支持OpenJDK) jdk下载安装:h ...

  7. 在python中发送自定义消息

    .py import win32api, win32con, win32gui import win32gui_struct import ctypes from ctypes import * GU ...

  8. 以二进制文件安装K8S之部署etcd高可用集群

    概述 前提条件:已经准备好CA根证书(etcd在制作CA证书时需要CA根证书),并且把CA根证书文件ca.key和ca.crt拷贝到3个etcd节点的/etc/kubernetes/pki目录下. 3 ...

  9. MyBaits查询MySQL日期类型结果相差8个小时

    问题描述 在Java项目中使用MyBatis作为ORM框架,但是查询出的MySQL日期类型字段值总是比数据库表里的值多8个小时. 具体说明: MySQL数据库表字段类型为timestamp,映射的Ja ...

  10. 串口通信RXTXcomm使用

    一.串口通信原理 串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节. 尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时 ...