• 如何获取springboot中所有的bean


    代码

    @Component
    public class TestS {
        @Autowired
        private Map allBean = Maps.newConcurrentMap();
    
        public void testA(){
            System.out.println("测试下");
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    这段代码是一个使用 Spring Framework 的依赖注入(DI)功能的示例。它用 @Autowired 注解将一个类型为 Map 的变量声明为一个由 Spring 容器管理的 bean,并初始化为一个线程安全的 ConcurrentMap 实现对象。

    从代码中可以看出以下几点:

    1. @Autowired:这是 Spring Framework 提供的一个注解,用于自动装配依赖项。通过在成员变量上标记 @Autowired 来告诉 Spring 应该自动将相应的 bean 注入到该变量中。

    2. private Map allBean = Maps.newConcurrentMap();:这是一个私有成员变量 allBean 的声明,并使用 Guava 中的 Maps.newConcurrentMap() 方法初始化为一个线程安全的 ConcurrentMap 实现对象。

    3. Map:表示一个键值对集合,其中键的类型为 String,值的类型为 Object。在这里,allBean 是一个用于存储所有 bean 的映射。

    4. 在这个示例中,allBean 作为一个容器来存放通过 Spring 正确注册并由其进行管理的所有 bean。可以通过 allBean 变量来引用和使用这些 bean。

    需要注意的是,如果要确保在类中能够正确注入 allBean 的实例,需要确保所在的类也被 Spring 管理并注入相应的依赖关系。在使用 @Autowired 注解之前,需要确保已经配置了 Spring 容器,并将相关的 bean 注册到容器中。

    使用场景

    假如某个service有不同的实现类,在实际业务使用时,可以根据这个map的key获取不同的service实现类进行对应的业务处理。

  • 相关阅读:
    AspectJ切面自定义注解实现参数分组校验——基础概念(2)
    linux内核分析:docker与隔离
    刷题记录:HDU - 3001Travelling
    基于神经网络的呼吸音分类算法
    TCP/IP五元组
    搭建 Vite + Vue3 + TypeScript + Electron 项目
    毛玻璃动画交互效果
    C++11智能指针unique_ptr剖析
    ArcGIS基础:使用线段分割面数据操作
    Matlab求解椭球上运动的点B,满足到定点A、C的距离之和最短
  • 原文地址:https://blog.csdn.net/liuyunshengsir/article/details/132716174