Spring Boot Service注入为null mapper注入为null @Component注解下@Value获取不到值 WebsocketServer类里无法注入service
最近搞了一下websocket前台(这个网上有很多的教程这里就不班门弄斧啦) 以及前后台的交互 和后台的bug(搞了两天) 也是状态频发 bug不断 下面说一说问题、
Websocket主类里面无法注入Service 从而导致Service里Mapper也注入为null 具体原因的还是因为websocket主类里的一个
@Component 的注解 他的作用呢就是实例化 但是他是项目启动时就实例化的 这样 后续的注入就会注入不进去 后来自作聪明在主类里new的一个service 进去是进去了
但是在service进mapper的时候 mapper又注入不进去了 这次注入不进去的原因就是因为你这个service是new出来的所以无法注入 还是要从根本上及决问题啊;;;
@component (把普通pojo实例化到spring容器中,相当于配置文件中的
<bean id="" class=""/>) 泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。 案例:
<context:component-scan base-package=”com.*”>
上面的这个例子是引入Component组件的例子,其中base-package表示为需要扫描的所有子包。
共同点:被@controller 、@service、@repository 、@component 注解的类,都会把这些类纳入进spring容器中进行管理
解决方案: 注入不进去的根本原因还在于是加载主类的时候没有实例化到service 所以我们在Application 启动类里加入ConfigurableApplicationContext
下面附上application、websocket上的代码供大家参考:
Application:
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(WebsocketApplication.class);
ConfigurableApplicationContext configurableApplicationContext = springApplication.run(args);
WebsocketServer.setApplicationContext(configurableApplicationContext);
}
WebsocketServer:
@Autowired
private WebsocketService websocketService; private static ApplicationContext applicationContext; public static void setApplicationContext(ApplicationContext applicationContext){
WebsocketServer.applicationContext = applicationContext;
} //需要用到service的方法内
websocketService=applicationContext.getBean(WebsocketService.class);
之后就是@Value注解在本WebsocketServer类里获取不到我在application.yml里配置的值 试了好多方法都不行(后来在ServiceImpl类里获取的值)
哪位大佬有解决办法可以共享一下将感激不尽
Spring Boot Service注入为null mapper注入为null @Component注解下@Value获取不到值 WebsocketServer类里无法注入service的更多相关文章
- Spring Boot@Component注解下的类无法@Autowired的问题
title: Spring Boot@Component注解下的类无法@Autowired的问题 date: 2019-06-26 08:30:03 categories: Spring Boot t ...
- Spring Boot 面试,一个问题就干趴下了!(下)
前些天栈长在Java技术栈微信公众号分享一篇文章:Spring Boot 面试,一个问题就干趴下了!,看到大家的留言很精彩,特别是说"约定大于配置"的这两个玩家. 哈哈,上墙的朋友 ...
- Spring boot集成Mybatis-Plus,通用Mapper
Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生.(摘自mybatis-plus官网)Mybatis虽然已 ...
- Spring Boot集成Mybatis及通用Mapper
集成Mybatis可以通过 mybatis-spring-boot-starter 实现. <!-- https://mvnrepository.com/artifact/org.mybatis ...
- 【spring boot】SpringBoot初学(6)– aop与自定义注解
前言 github: https://github.com/vergilyn/SpringBootDemo 一.AOP 官方demo:https://github.com/spring-project ...
- spring boot系列03--spring security (基于数据库)登录和权限控制(下)
(接上篇) 后台 先说一下AuthConfig.java Spring Security的主要配置文件之一 AuthConfig 1 @Configuration 2 @EnableWebSecuri ...
- Spring Boot 2.2.1 正式发布,需特别注意这个注解的使用!
Spring Boot 2.2.1 已于2019年11月7日正式发布. 该版本内容包含110项修复.改进和依赖升级. 如果开发者要从Spring Boot 2.2.0升级到2.2.1的话,这里要特别注 ...
- Java框架spring Boot学习笔记(七):@Configuration,@bean注解
@Configuration作用在类上,相当于一个xml文件 @bean作用于方法上,相当于xml配置中的<bean>标签 一个例子: 新建一个Springboot工程 新建一个User类 ...
- Spring Boot分布式系统实践【基础模块构建3.3】注解轻松实现操作日志记录
日志注解 前言 spring切面的编程,spring中事物处理.日志记录常常与pointcut相结合 * * Pointcut 是指那些方法需要被执行"AOP",是由"P ...
随机推荐
- python基础:9.深拷贝存储双字典
# 双层循环 temp = list() for i in range(1,100): item = {} itme["a"] = i for j in range(1,100): ...
- grep正则表达式(二)
任意字符(The Any Character) dot or period character: "." grep -h '.zip' dirlist*.txt ".&q ...
- CPU缓存
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11520840.html 由于CPU发展的速度远快于内存的发展,CPU的处理速度就比内存的访问速度快得多 ...
- 随手记--QT
设置toolButton按钮隐藏(可视化): ui->toolButton->setVisible(true); 改变按钮背景色: ui->toolButton->setSty ...
- ubuntu 配置jre后出现问题Error occurred during initialization of VM
百度了好久,找到了一个可以解决的办法. https://blog.51cto.com/chris2013/1313117 就是在usr/java/jre/lib/rt.pack需要解压成rt.jar ...
- Nuget-Swagger-Swashbuckle:Swashbuckle
ylbtech-Nuget-Swagger-Swashbuckle:Swashbuckle 1.返回顶部 1. Seamlessly adds a Swagger to WebApi projects ...
- sqlserver存储过程(转)
一.不含参数的存储过程 1.没有返回值: 创建语句: CREATE PROCEDURE dbo.ProTest AS DECLARE @test int SET @test = 1 ...
- 项目搭建(一):windows UIAutomation API 框架
[环境] 操作系统:Windows7 集成环境:Visual Studio2015 编程语言:C# 目标框架:.net framework4.6 1.新建项目 Visual Studio 2015 [ ...
- printf输出各种类型,cout控制输出各式
; char c = 'A'; int *p = &a; char *st = "ahj"; float x = 3.1415926; cout << & ...
- DOM选择器
DOM选择器分为:id.class.name.tagname.高级.关系选择器;(返回的都是标签) 一:元素节点选择器: 1. id: 返回的是单个对象 <body> <div cl ...