Bean对象不同的方式注入,是不同的annotation接口描述

发布于:2025-06-15 ⋅ 阅读:(22) ⋅ 点赞:(0)

假设的两个类:

第一个

package biz.baijing.definition;

import ...

@Configuration
public class BaiJingConfig {

    @Bean // ConfigurationClassBeanDefinitionReader$ConfigurationClassBeanDefinition
    public String bjConf() {
        return "Baijing Configuration";
    }
}

第二个

package biz.baijing.definition;

import ...

@Component       // ScannedGenericBeanDefinition
public class BaiJing {
}

演示的结果

package biz.baijing;

import ...

@SpringBootApplication
public class BizBaiJingApplication
{
    public static void main( String[] args )
    {

        ConfigurableApplicationContext run = SpringApplication.run(BizBaiJingApplication.class, args);

        // 获取 BeanDefinition 对象
        ConfigurableListableBeanFactory beanFactory = run.getBeanFactory();
        //class org.springframework.context.annotation.ScannedGenericBeanDefinition
        BeanDefinition baiJing = beanFactory.getBeanDefinition("baiJing"); 
        //class org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader$ConfigurationClassBeanDefinition
        BeanDefinition bjConf = beanFactory.getBeanDefinition("bjConf");
        System.out.println(baiJing.getClass());
        System.out.println(bjConf.getClass());
    }
}

@Bean

ScannedGenericBeanDefinition

@Componet

@Service

@Controller

……

ConfigurationClassBeanDefinition