获取类中所有的bean

简介: 获取类中所有的bean

生命中有很多东西,能忘掉的叫过去,忘不掉的叫记忆。一个人的寂寞,有时候,很难隐藏得太久,时间太久了,人就会变得沉默,那时候,有些往日的情怀,就找不回来了。或许,当一段不知疲倦的旅途结束,只有站在终点的人,才会感觉到累。其实我一直都明白,能一直和一人做伴,实属不易。——海子

使用hutool实现

package com.ruben.simplescaffold;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ClassUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.TypeUtil;
import com.ruben.simplescaffold.entity.UserDetail;
import org.junit.jupiter.api.Test;
import java.lang.reflect.Type;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * 测试类
 *
 * @author <achao1441470436@gmail.com>
 * @since 2021/7/11 0011 18:09
 */
public class Tests {
    @Test
    void contextLoads() {
        final List<Class<?>> collect = getJavaBeans(UserDetail.class);
        collect.forEach(System.out::println);
    }
    private List<Class<?>> getJavaBeans(Class<?> type) {
        return Arrays.stream(ReflectUtil.getFields(type)).map(field -> {
            if (BeanUtil.isBean(field.getType())) {
                return field.getType();
            } else if (Collection.class.isAssignableFrom(field.getType())) {
                Type argument = TypeUtil.getTypeArgument(field.getGenericType());
                Class<Object> aClass = ClassUtil.loadClass(argument.getTypeName());
                if (BeanUtil.isBean(aClass)) {
                    return aClass;
                }
            }
            return null;
        }).filter(Objects::nonNull).collect(Collectors.toList());
    }
}


运行结果:

对应这两个类

相关文章
|
4月前
|
XML Java 数据格式
|
5月前
|
Java Spring 容器
ServiceLocatorFactoryBean获取Bean方法
在上述示例中,`MyService`是要获取的具体Bean的类型。通过配置 `ServiceLocatorFactoryBean`,定义 `ServiceLocator`接口和实现类,然后通过获取 `MyServiceLocator`实例并调用方法,可以从Spring容器中获取特定类型的Bean。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
76 0
怎么看注解对应的处理类?
怎么看注解对应的处理类?
64 0
|
5月前
|
XML Java 数据格式
怎么通过类型来获取 bean以及为什么可以通过构造器配置 bean
怎么通过类型来获取 bean以及为什么可以通过构造器配置 bean
53 0
|
5月前
|
XML Java 数据格式
spring-bean配置信息重用(继承)和bean创建顺序是什么以及bean 对象的单例和多例讲解
spring-bean配置信息重用(继承)和bean创建顺序是什么以及bean 对象的单例和多例讲解
62 0
|
Java 测试技术 Spring
更简单的取 Bean 对象(对象装配)(下)
更简单的取 Bean 对象(对象装配)(下)
|
设计模式 Java Spring
更简单的取 Bean 对象(对象装配)(上)
更简单的取 Bean 对象(对象装配)(上)
|
Java 容器 Spring
七.Spring源码剖析-Bean的实例化-属性注入
喜欢我的文章的话就给个好评吧,你的肯定是我坚持写作最大的动力,来吧兄弟们,给我一点动力 这一章节我们来讨论创建Bean过程中的属性注入,在Spring的IOC容器启动过程中,会把定义的Bean封装成BeanDefinition注册到一个ConcurrentHashMap中,Bean注册完成后,就会对单利的且lazy-init=false 的Bean进行实例化。创建Bean的代码在 AbstractAutowireCapableBeanFactory#doCreateBean 中,当Bean创建成功之后,会调用AbstractAutowireCapableBeanFactory#populat
|
存储 缓存 Java
六.Spring源码剖析-单利Bean的实例化
前面系列章节我们分析了Spring的IOC的启动流程,包括:容器创建,配置加载,配置解析,Bean注册等几个阶段,所以Bean注册其实就是把Bean的相关属性,依赖关系等封装成BeanDeafinition对象,然后注册到一个ConcurrentHashMap中。要注意的是这个BeanDeafinition只是对Bean的一个定义封装而已,并不是真正的Bean的实例,那Bean的实例是在什么时候创建的?有三种情况 如果是单利Bean,且lazy-init=false 急切初始(即时,立即,迫切,饥饿都是一个意思)的情况,在IOC容器启动之后就会根据BeanDeafinition对Bean进行
|
缓存 Java 开发者
Spring源码(八)-构造方法实例化Bean-createBeanInstance
各位小伙伴好,这是 Spring 源码系列的第八篇文章。本篇篇幅较长(五千八百字),建议收藏慢慢品尝。
645 1