SpringBoot - 获取被Spring容器管理的Bean对象

70 阅读1分钟

文章目录

@Configuration
public class MyConfigurer  implements WebMvcConfigurer {

    @Bean
    public Book getBook() {
        Book book = new Book();
        book.setName("容器生成");
        return book;
    }
    
}


注意两个容器虽然都是Bean工厂关键类,管理同样的Bean类型,但是他们管理的Bean对象不是同一个。

1. SpringApplication类 - 启动项目类

@SpringBootApplication
@MapperScan(value="top.linruchang.springbootdemo.dao")
public class SpringbootdemoApplication {

    public static void main(String[] args) {

        ConfigurableApplicationContext run = SpringApplication.run(SpringbootdemoApplication.class, args);
    
        ConfigurableListableBeanFactory beanFactory = run.getBeanFactory();
        
        // 获取到同类型的对象都是同一个对象
        Book bean = beanFactory.getBean(Book.class);

        System.out.println(bean);

    }

}

@SpringBootApplication
public class App
{
    public static void main( String[] args ) throws SQLException {

        ApplicationContext context = SpringApplication.run(App.class, args);

        User bean = context.getBean(User.class);

        System.out.println(bean);

    }
    
}

2. AnnotationConfigApplicationContext类

@SpringBootApplication
@MapperScan(value="top.linruchang.springbootdemo.dao")
public class SpringbootdemoApplication {

    public static void main(String[] args) {

        SpringApplication.run(SpringbootdemoApplication.class, args);


        AnnotationConfigApplicationContext acac = new AnnotationConfigApplicationContext(MyConfigurer.class);

        Book bean = acac.getBean(Book.class);

        System.out.println(bean);

    }

}