SpringBoot中的@Configuration注解
标识配置类:使用
@Configuration
注解的类被标识为配置类,告诉 Spring 这个类是用来配置 Spring 应用程序上下文的。定义 Bean:在
@Configuration
注解的类中,我们可以使用@Bean
注解定义 Bean 对象,Spring 容器会自动扫描这些 Bean,并将它们纳入管理。代替 XML 配置:通过使用注解配置类,可以避免传统 XML 配置文件的烦琐,使得配置更加简洁和易于维护。
组件扫描:
@Configuration
注解会隐式地向 Spring 容器注册一个 Bean,类型为该配置类本身,从而使 Spring 可以基于组件扫描找到其他 Bean。配合其他注解使用:
@Configuration
注解通常与其他注解一起使用,比如@Bean
、@ComponentScan
、@Import
等,来实现复杂配置或者注入相关 Bean
当一个类被该注解标记后,被标记为配置类,在里面定义的Bean对象会被纳入spring容器,交由容器管理
@Configuration
public class MainConfig {
@Bean(name = "MainConfig")
public MyBean myBean(){
return new MyBean("MainConfig");
}
}
当我们启动容器后,name为MainConfig的这个bean会被自定注入到spring容器,我们可以获取到;
ConfigurableApplicationContext run = SpringApplication.run(SpringbootStudyApplication.class, args);
Object mainConfig = run.getBean("MainConfig");
System.out.println(mainConfig.toString());
结果
导入额外的 Configuration 类,@Import注解
我们先定义一个MyBean类型bean,这个方法不被@C Configuration标记,可以是不是会被自动纳入容器;
启动容器,获取这个名称的bean
运行结果
可以看到这个bean没有被加入到spring容器
当我们在一个被@Configuration标记的类上面使用@import注解引入这个名为AdditionalConfig1的bean,如下
@Configuration
@Import(AdditionalConfig1.class)
public class MainConfig {
@Bean(name = "MainConfig")
public MyBean myBean(){
return new MyBean("MainConfig");
}
}
再次启动容器查看
可以看到,容器成功捕获到
@Import注解通常用于引入其他Java配置类,而不是XML文件。如果你想引入XML配置文件中的bean定义,通常会使用@ImportResource注解
假设你在resources下有一bean.xml文件,内容如下
通过@ImportResource导入xml文件里面这个bean
启动容器
可以看到这个bean也被引入进来