知识点:
    1、@Configuration注解
    3.1、@Configuration注解@Bean注解,配置文件类 - 图1

    2、@Bean注解
    3.1、@Configuration注解@Bean注解,配置文件类 - 图2

    • 组件:此处是指被实例化的功能类。
    • 单实例:多次调用同一个实例,这个实例地址值值相同的,也就是每次调用都是同一个实例,而非重新创建的。

    3、 获取容器里所有的组件:String[] names = run.getBeanDefinitionNames()

    示例:

    1. /**
    2. * 1、配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的
    3. * 2、配置类本身也是组件
    4. * 3、proxyBeanMethods:代理bean的方法
    5. * Full(proxyBeanMethods = true)(保证每个@Bean方法被调用多少次返回的组件都是单实例的)(默认)
    6. * Lite(proxyBeanMethods = false)(每个@Bean方法被调用多少次返回的组件都是新创建的)
    7. */
    8. @Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类 == 配置文件
    9. public class MyConfig {
    10. /**
    11. * Full:外部无论对配置类中的这个组件注册方法调用多少次获取的都是之前注册容器中的单实例对象
    12. * @return
    13. */
    14. @Bean //给容器中添加组件。以方法名作为组件的id。返回类型就是组件类型。返回的值,就是组件在容器中的实例
    15. public User user01(){
    16. User zhangsan = new User("zhangsan", 18);
    17. //user组件依赖了Pet组件
    18. zhangsan.setPet(tomcatPet());
    19. return zhangsan;
    20. }
    21. @Bean("tom")
    22. public Pet tomcatPet(){
    23. return new Pet("tomcat");
    24. }
    25. }