spring boot 自动装载对象为null问题的解决
情况描述
有个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问题的解决的更多相关文章
- Spring Boot自动配置如何工作
通过使用Mongo和MySQL DB实现的示例,深入了解Spring Boot的@Conditional注释世界. 在我以前的文章“为什么选择Spring Boot?”中,我们讨论了如何创建Sprin ...
- Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 Starter 组件 摘录:读书是读完这些文字还要好好用心去想想,写书也一样,做任何事也一样 图 2 第二章目录结构图 第 2 章 Spr ...
- Spring Boot 自动装配原理
Spring Boot 自动装配原理 Spring Boot 在启动之前还有一系列的准备工作,比如:推断 web 应用类型,设置初始化器,设置监听器,启动各种监听器,准备环境,创建 applicati ...
- Spring Boot自动配置原理懂后轻松写一个自己的starter
目前很多Spring项目的开发都会直接用到Spring Boot.因为Spring原生开发需要加太多的配置,而使用Spring Boot开发很容易上手,只需遵循Spring Boot开发的约定就行了, ...
- Spring Boot自动配置与Spring 条件化配置
SpringBoot自动配置 SpringBoot的自动配置是一个运行时(应用程序启动时)的过程,简化开发时间,无需浪费时间讨论具体的Spring配置,只需考虑如何利用SpringBoot的自动配置即 ...
- Spring Boot自动配置原理、实战
Spring Boot自动配置原理 Spring Boot的自动配置注解是@EnableAutoConfiguration, 从上面的@Import的类可以找到下面自动加载自动配置的映射. org.s ...
- Spring Boot自动配置
Spring Boot自动配置原理 Spring Boot的自动配置注解是@EnableAutoConfiguration, 从上面的@Import的类可以找到下面自动加载自动配置的映射. org.s ...
- Spring boot Jpa添加对象字段使用数据库默认值
Spring boot Jpa添加对象字段使用数据库默认值 jpa做持久层框架,项目中数据库字段有默认值和非空约束,这样在保存对象是必须保存一个完整的对象,但在开发中我们往往只是先保存部分特殊的字段其 ...
- Spring Boot 自动装配(二)
目录 目录 前言 1.起源 2.Spring Boot 自动装配实现 2.1.@EnableAutoConfiguration 实现 2.1.1. 获取默认包扫描路径 2.1.2.获取自动装配的组件 ...
- Spring Boot自动配置原理(转)
第3章 Spring Boot自动配置原理 3.1 SpringBoot的核心组件模块 首先,我们来简单统计一下SpringBoot核心工程的源码java文件数量: 我们cd到spring-boot- ...
随机推荐
- Vite4+Typescript+Vue3+Pinia 从零搭建(1) - 项目初始化
项目代码同步至码云 weiz-vue3-template 前提准备 1. node版本 Node.js版本 >= 12,如果有老项目需要旧版本的,推荐用 nvm 管理node版本. PS C:\ ...
- PicGo + Gitee 实现 Markdown 图床
最近再研究图床,注册的阿里云域名备案还在审批,所以七牛云图床暂时没用,所以试下用PicGo+ Gitee PicGo - 基于 electron-vue 开发的图床工具 PicGo目前支持了微博图床, ...
- 极限挑战:使用 Go 打造百亿级文件系统的实践之旅
JuiceFS 企业版是一款为云环境设计的分布式文件系统,单命名空间内可稳定管理高达百亿级数量的文件. 构建这个大规模.高性能的文件系统面临众多复杂性挑战,其中最为关键的环节之一就是元数据引擎的设计. ...
- 树莓派安装freeswitch
树莓派版本: Raspberry Pi 4B 操作系统 : Ubuntu Server 20.04_x64 freeswitch版本 : 1.10.3 1.下载freeswitch源代码 wget h ...
- 2023年多校联训NOIP层测试1
2023年多校联训NOIP层测试1 T1 luogu P6882 [COCI2016-2017#3] Imena \(50pts\) 赛场上被如何输入和判断是否合法薄纱了,赛后发现还有数字这一说,而且 ...
- React axios 使用 http-proxy-middleware 解决跨域问题小记
壹 ❀ 引 在上篇bug分析的记录文中,提到axios可做到取消接口请求,所以想写一篇关于axios.CancelToken使用以及原理分析的文章(主要是自己好奇到底如何做到的取消).在准备工作阶段, ...
- JS leetcode 翻转字符串里的单词 题解分析
壹 ❀ 引 今天来做一道难度中等,但实际难度并不是很高的题目,题目来源leetcode151. 翻转字符串里的单词,题目描述如下: 给定一个字符串,逐个翻转字符串中的每个单词. 示例 1: 输入: & ...
- SpringBoot 2.6 和 JUnit 5 的测试用例注解和排序方式
JUnit5 的测试注解 在JUnit5中, 不再使用 @RunWith 注解, 改为使用 @ExtendWith(SpringExtension.class) @ExtendWith(SpringE ...
- ORA-14550错误解决方法
工作中修改临时表,报错: ---------------------------------- 以SYSDBA身份登录,执行以下语句: select a.sid, a.serial#, ...
- Python 潮流周刊第 39 期(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...