SpringBoot切换不同的实现时,出现nullPointer问题

1,有时候算法需要迭代,相同的接口需要多个实现,自己可以随意切换,接口类:

package com.xxx.shortvideo.manager;



public interface VideoRecommendedManger {

  FeedVideoByUserDTO getVideoByUser(FeedVideoByUserReq req);

}

2, 针对接口有两个实现

3,通过配置config类来实现

 

package com.xxxx.shortvideo.config;

import com.xxxx.shortvideo.enums.BizTypeEnum;
import com.xxxx.shortvideo.manager.VideoRecommendedManger;
import com.xxxx.shortvideo.manager.impl.VideoRecHotWordMangerImpl;
import com.xxxx.shortvideo.manager.impl.VideoRecommendedMangerImpl;
import com.google.common.collect.Maps;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Map;


@Configuration
public class ShortVideoFillServiceConfig {
	
	@Autowired
	ApplicationContext applicationContext;
	
	@Bean
	Map<String, VideoRecommendedManger> shortVideoRecServiceMap() {
		Map<String, VideoRecommendedManger> shortVideoRecServiceMap = Maps.newHashMap();

		shortVideoRecServiceMap.put(BizTypeEnum.SHORT_VIDEO_DEFAULT.getPrefix(), applicationContext.getBean(VideoRecommendedMangerImpl.class));
		shortVideoRecServiceMap.put(BizTypeEnum.SHORT_VIDEO_HOT_WORD.getPrefix(), applicationContext.getBean(VideoRecHotWordMangerImpl.class));

		return shortVideoRecServiceMap;
	}

}

热门文章

暂无图片
编程学习 ·

错误码如何设计才合理?

一 前言在工作中,接触过不少外部接口,其中包括:支付宝,微信支付,微博开发平台,阿里云等等。每家公司错误码风格都不尽相同,有使用纯数字的,有使用纯英文的,也有使用字母和数字组合的。也接触过很多内部系统,错误码设计也不尽相同。错误码的输出路径面向日志输出服务…
暂无图片
编程学习 ·

ASP.NET Core2.0项目实战-003

Views布局(Layouts)视图组件(ViewComponents)分部视图(PartialViews)HTML助手(HtmlHelpers) 页面标签的辅助类Tag助手(TagHelpers)配置全部视图(Global view configutation)视图找的时候如果home里面没有还会找shared文件夹里面的using System; using System.Colle…
暂无图片
编程学习 ·

几种常见的分布式事务解决方案对比

背景 分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免。 ACID 指数据库事务正确执行的四个基本要素: 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durabili…
暂无图片
编程学习 ·

线程开多少合适?

简单来说 CPU 密集型: 最佳线程数 = CPU 核数(逻辑)+ 1 注:计算(CPU)密集型的线程恰好在某时因为发生一个页错误或者因其他原因而暂停,刚好有一个“额外”的线程,可以确保在这种情况下CPU周期不会中断工作。 I/O密集型: 最佳线程数 = CPU核心数 * (1/CPU利用率) = CPU…
暂无图片
编程学习 ·

ps如何实现阳光照射效果

1.ps打开图片。2.按ctrl+j复制背景图层就会自动创建图层(图层 0 副本),选择图层 0 副本,按ctrl+alt+2调出高光选区,再按ctrl+j复制高光选区就会自动创建图层(图层 1)。3.选择图层1,ctrl+L打开色阶工具,拖动输入色阶的右边白色滑块向左边移动把图中亮的的地方调更亮。4…
暂无图片
编程学习 ·

“百度大脑EasyDL经典版”拍了拍你,真实的产业应用get了吗?

在现有业务或方案的基础上,企业如何通过引入AI能力真正做到在降低成本的同时提升效率?质检流水线中,检测人员注意力与体力不支导致的低效、价格高昂的智能检测设备、千变万化的瑕疵形态都迫使企业投入更多成本;电网户外巡检中,越来越密集的电网分布、安全指标提升带来的巡…
暂无图片
编程学习 ·

难得一遇的5G大屏手机 荣耀X10 Max配置分析

6月22日,荣耀通过微博证实了荣耀X10 Max的存在,并宣布将会在7月2日正式发布。消息一出可谓是让很多人非常欣喜,尤其是等了多年大屏手机的用户。荣耀X10 Max不仅是荣耀在5G时代发布的首款大屏手机,也是荣耀时隔两年,继荣耀8X后的续作。那么这款5G大屏手机有哪些特点和配置呢…
暂无图片
编程学习 ·

【阿里云】学生成长计划领取资格考试答案分享

云计算及云服务器入门 刚刚尝试了阿里云的高校学生计划,完成身份和学生认证后出现了需要测试才能领取,没想到凭感觉还拿到了90分,科一科四都能过了哈哈,下面是分享,希望后半年能把这种好资源利用起来,真正学点吃饭的东西,正确答案加粗显示。 选择题单选 1.SQL语言的功能…
暂无图片
编程学习 ·

C 语言为什么不会过时?

01、为什么C语言不会过时 评价任何一门编程语言,都是招人骂的。永远是这样。就像是春寒料峭的季节,街上穿棉袄和穿单衣的擦肩而过,双方一定是同时在心里出现了两个字:“傻逼!”这个在心理学上有个专业的名字:叫做“二逼”现象! 那我为啥还要做这个挨骂的事呢?作为《C语…
暂无图片
编程学习 ·

jar包用ftp协议去获取图片无法成功(IDEA可以成功)

jar包用ftp协议去获取图片无法成功(IDEA可以成功)同样的代码 在同一个服务器上运行,用idea去获取图片 可以成功,但是打成jar包去远程获取图片无法成功,拉回来的图片是0kb 同样的代码 在同一个服务器上运行,用idea去获取图片 可以成功,但是打成jar包去远程获取图片无法成…
暂无图片
编程学习 ·

iOS逆向 | 数字签名与证书

参考来源 https://ke.qq.com/course/314070 什么是数字签名 数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密…
暂无图片
编程学习 ·

git学习日志-标签

git也可以像svn一样打标签,以此来标记发布节点,以示重要性。 对标签的操作,一般包括: 1. 列出标签 2. 创建标签 3. 删除标签 4. 检出标签 一、列出标签 执行git tag命令,就可以看到当前仓库中已经打过的标签。注意: 这个命令会以字母顺序列出标签。 也可以加上-l或--list…
暂无图片
编程学习 ·

TabRow + TextView导致文字显示不完全

我们在使用表格布局TabLayout时会出一个现象:TextView显示文字时当超过屏幕换行是最后一个文字显示不完全,这个时候我们可以将Textview改成如下布局即可将android:layout_width="wrap_content"改为android:layout_width="0dp" 同时添加该属性android:lay…
暂无图片
编程学习 ·

近三位数增长,苏宁银行金融科技之花结出普惠金融之果

文|曾响铃来源|科技向令说(xiangling0815)美联储无限QE,2020年中国不设GDP目标,2万亿直达基层扶危纾困……国内疫情已经基本控制,经济基本面迎来全面复苏阶段,作为市场中最活跃的存在之一,小微企业在复苏过程中,面临的融资难等问题也被热议。在中国有一群喊着帮助小微企…
暂无图片
编程学习 ·

http相关

http相关下载文件 下载文件 //处理中文文件名乱码if (request.getHeader("User-Agent").toUpperCase().contains("MSIE") ||request.getHeader("User-Agent").toUpperCase().contains("TRIDENT")|| request.getHeader("User-Agen…
暂无图片
编程学习 ·

记录Linux学习2

远程登录到Linux服务器 为什么要远程登录到linux? 因为linux一般是装在机房中,而不是在自己电脑上的,我们需要在公司远程操控Linux系统,所以要远程登录到linux。 Xshell5(远程登录软件),XFtp5(远程上传下载文件的软件) Xshell [1] 是一个强大的安全终端模拟软件,它支…
暂无图片
编程学习 ·

react学习记录-PropTypes 和组件参数验证

文章目录PropTypes 和组件参数验证PropTypes PropTypes 和组件参数验证 JavaScript 语言的弱类型,让我们写代码很爽,但是也很容易出 bug。 变量没有固定类型可以随意赋值,在我们构建大型应用程序的时候并不是什么好的事情。你写下了 let a = {} ,如果这是个共享的状态并且在…
暂无图片
编程学习 ·

安卓使用tf模型

安卓上使用tensorflow模型 使用pb模型: 【人脸识别】Google的Facenet移植到安卓 https://www.52pojie.cn/thread-758292-1-1.html 将TensorFlow训练好的模型迁移到Android APP上 https://blog.csdn.net/u012328159/article/details/81101074 https://github.com/cayden/facesa…
暂无图片
编程学习 ·

关于微服务架构最好的文章!

本文将介绍微服务架构和相关的组件,介绍他们是什么以及为什么要使用微服务架构和这些组件。本文侧重于简明地表达微服务架构的全局图景。❝ 为了防止不提供原网址的转载,特加上原文链接:https://www.cnblogs.com/skabyy/p/11396571.html要理解微服务,首先要先理解不是微服务…
暂无图片
编程学习 ·

1254 统计封闭岛屿的数目(dfs)

1. 问题描述:有一个二维矩阵 grid ,每个位置要么是陆地(记号为 0 )要么是水域(记号为 1 )。我们从一块陆地出发,每次可以往上下左右 4 个方向相邻区域走,能走到的所有陆地区域,我们将其称为一座「岛屿」。如果一座岛屿 完全 由水域包围,即陆地边缘上下左右所有相邻区…