Spring使用小技巧--排除bean无法被调用问题

news2025/1/19 23:01:59

我们在项目中可能由于项目的复杂性,创建了个spring的bean,但是调用却出现报错,显示无法找到该bean的异常。

这个时候我们就需要找到出错的原因,很多人往往会忽略的一点就是,你所创建的bean有可能并没有被加载到ioc容器中。但怎么去看这个bean是否被spring装载到了ioc容器呢?

我这里提供一种方法。通过spring上下文获取到beaninition,通过beanName找寻对应的bean是否被加载到ioc,需要注意,您所写的bean,是否为懒加载。

可以在启动时我们自己本地检查,另一种是运行到某个类时,再进行检查。两种方式,各位老爷任选。

废话不多说,直接上代码

启动时检查

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.scheduling.annotation.EnableAsync;

import java.util.Arrays;

@SpringBootApplication
@EnableAsync // springboot 开启异步支持
public class Applications {

    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(Applications.class, args);
        boolean b = Arrays.stream(context.getBeanDefinitionNames()).anyMatch(a -> {
            // 使用contains是因为,加载到BeanDefinition中的names有可能是全路径
            return a.contains("testController");
        });
        if (b) {
            System.out.println("存在 TestController 的bean");
        }
    }
}

类中检查

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;

@RestController
@Slf4j
public class ProfilesTestController {


    @Autowired
    ConfigurableApplicationContext context;

    @RequestMapping(method = RequestMethod.GET, path = "/profiles/test2")
    public void test2() {
        boolean match = Arrays.stream(context.getBeanDefinitionNames()).anyMatch(a -> {
            return a.contains("testController");
        });
        if (match)  System.out.println("存在 TestController 的bean");;
    }

查看执行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1682207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux系统编程】第十九弹---进程状态(下)

​​​​​​​ ✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、僵尸进程 2、孤儿进程 3、运行状态 4、阻塞状态 5、挂起状态 6、进程切换 总结 1、僵尸进程 上一弹…

算法练习第22天|39. 组合总和、40.组合总和II

39. 组合总和 39. 组合总和 - 力扣(LeetCode)https://leetcode.cn/problems/combination-sum/description/ 题目描述: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数…

Unity Mirror 从入门到入神(一)

Mirror从入门到成神 文章目录 Mirror从入门到成神简介NetworkClientRegisterPrefabConnect (string address)Disconnect ()activeactiveHost NetworkServerSpawn 简介 Mirror是一个unity网络同步框架,基于MonoBehaviour生命周期的回调的基础上进行数值的同步&#…

一个强大的在线解析网站,无需登录,只用把视频链接粘贴进去就能免费解析下载视频。

TiQu.cc是什么? TiQu.cc是一个强大的在线工具,让用户可以从包括Facebook、VK、Twitter、Tiktok、Instagram等在内的100多个平台下载他们喜爱的视频。不论是音乐、电视节目、电影、短片还是个人上传的内容,TiQu.cc都可以帮助您随时随地以离线…

什么是检索增强生成(Retrieval Augmented Generation)?RAG 架构如何实现?

检索增强生成(Retrieval Augmented Generation)时代 在不断发展的生成人工智能世界中,检索增强生成 (RAG) 标志着一项重大进步,它将检索模型的准确性与生成模型的创造性相结合,达到了准确&创新的更高层级。 这种…

摸鱼大数据——Linux搭建大数据环境(Hadoop高可用环境搭建)六

Hadoop高可用环境搭建 确定提前安装好了hadoop和zookeeper 1.删除原有数据文件 三台机器都要进行删除 可以使用CRT发送交互到所有会话 rm -rf /export/data/hadoop-3.3.0 2.安装软件 三台机器都要进行安装 注意: 如果网络较慢安装失败,那就重复安装即可 # 实现多个服务的通讯 …

数字水印 | 奇异值分解 SVD 的 Python 代码实现

🥑原理:数字水印 | 奇异值分解 SVD 的定义、原理及性质 🥑参考:Python 机器学习笔记:奇异值分解(SVD)算法 正文 对于一个图像矩阵,我们总可以将其分解为以下形式: 通过…

Halcon 根据XYZ生成3D模型

Halcon 根据XYZ生成3D模型 x_points := [a_x_points, b_x_points, c_x_points]y_points := [a_y_points, b_y_points, c_y_points]z_points := [a_z_points, b_z_points, c_z_points]stop()gen_object_model_3d_from_points

某单位Oracle数据库性能优化方案参考

内容分析: 本文是一篇关于XX市XX单位中心数据库优化方案的详细报告。文章首先描述了数据库的现状,包括其运行的软件环境、硬件环境、数据存储情况以及与检测点的连接方式。接着,文章列出了信息系统优化的常用策略,并具体解释了每一…

线性回归模型之套索回归

概述 本案例是基于之前的岭回归的案例的。之前案例的完整代码如下: import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import Ridge, LinearRegression from sklearn.datasets import make_regression from sklearn.model_selectio…

对抗生成网络(GAN),DCGAN原理

目录 1. GAN基础原理 1.1 生成器 1.2 判别器 1.3 整体架构 2. 损失函数 3. DCGAN 3.1 问题 3.2 解决 1. GAN基础原理 GAN(Generative Adversarial Nets)是一种深度神经网络架构。它由生成器和判别器组成,生成器学习真实样本&#x…

微信公众号自定义分销商城小程序源码系统 带完整的安装代码吧以及系统部署搭建教程

系统概述 微信公众号自定义分销商城小程序源码系统是一款功能强大的电商解决方案,它集成了商品管理、订单处理、支付接口、分销管理等多种功能。该系统支持自定义界面设计,商家可根据自身需求调整商城的页面布局和风格,打造独特的品牌形象。…

月薪20K+的策划人简历应该怎么写?

一般咱们大多数策划在写简历前,都是先直接找模板,然后按照模板的框架直接往里面填内容。 最后草草收场,直接拿去海投简历,结果发现没有拿到任何面试邀约。 策划写简历前的第一件事要梳理自己的能力模型和岗位JD。 因为只有先梳…

解决谷歌浏览器无法登陆网站的问题,左下角弹出JavaScript(void:0)

破釜沉舟,全都试一遍: 如果还不行,那就关闭GPU加速:关了瞬间就好了 关闭之后,再打开GPU加速还是行的(咱也不知道为啥呀)

究极完整版!!Centos6.9安装最适配的python和yum,附带教大家如何写Centos6.9的yum.repos.d配置文件。亲测可行!

前言! 这里我真是要被Centos6.9给坑惨了,最刚开始学习linux的时候并没有在意那么的,没有考虑到选版本问题,直到23年下半年,官方不维护Centos6.9了,基本上当时配置的文件和安装的依赖都用不了了&#xff0c…

DCMM(数据管理能力成熟度模型)对企业的价值

随着大数据时代的来临,数据已成为企业发展的重要驱动力。为了有效地管理和利用数据,企业需要建立一套完善的数据管理体系,而DCMM(数据管理能力成熟度模型)正是这样一个帮助企业构建和优化数据管理能力的框架。 DCMM结构…

05-应用级开发者 AI 时代破局点

后端应用级开发者该如何拥抱 AI GC?就是在这样的一个大的浪潮下,我们的传统的应用级开发者。我们该如何选择职业或者是如何去快速转型,跟上这样的一个行业的一个浪潮? 0 AI金字塔模型 越往上它的整个难度就是职业机会也好,或者说…

Ubuntu 24 换国内源及原理 (阿里源)

备份原文件 sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak 编辑源文件 sudo gedit /etc/apt/sources.list.d/ubuntu.sources (阿里源) Types: deb deb-src URIs: https://mirrors.aliyun.com/ubunt…

ArcGIS arcpy代码工具——关于标识码的那些事(查找最大标识码、唯一性检查、重排序、空值赋值)

系列文章目录 ArcGIS arcpy代码工具——批量对MXD文件的页面布局设置修改 ArcGIS arcpy代码工具——数据驱动工具批量导出MXD文档并同步导出图片 ArcGIS arcpy代码工具——将要素属性表字段及要素截图插入word模板 ArcGIS arcpy代码工具——定制属性表字段输出表格 ArcGIS arc…

二. Ast - 反混淆(基础篇-api的使用)

在线代码转AST语法树网站:AST explorer 什么是path对象 通过以下的代码,对以上图片中的AST语法树做例子。 VariableDeclarator(path) 是一个函数,表示 traverse 遍历AST时,要进入的节点path 参数,表示当前正在遍历的节…