1. spring.factories
这种bean创建方式通常用于自动装配环境配置相关的类,以及加载starter

2. @Configuration+@ComponentScan
@Configuratin就是我们的环境配置类
一般来说,如果我们的配置类都在SpringBoot启动类路径下,如果不在则需要添加@ComponentScan或者spring.factories,这样导入相应包即可自动配置相应的bean。
此外@Configuration可以与@Conditional集(@ConditionOnClass, @ConditionOnMissingBean等)的注解一起使用

3. @Import直接导入
@import注解用于导入一个或者多个配置类或者普通java类,以便在当前的配置类中使用。
@Import使用方式:
导入一个或多个配置类L:可以使用@Import导入其他使用了@Configuration注解的配置类,例如@Import(MyConfig.class)将会导入名为MyConfig的配置类
导入普通java类:可以使用@Import导入非配置的java类,以便在当前类中使用
此外,@Import只能在类上使用

4. @Bean
@Bean只能用在方法上,对应的class需要加@Configuration注解;
代码中常用@Bean来注解诸如db、mq等配置信息,它有以下几个特点:
- 可以指定bean的名称:可以使用name属性指定bean的名称,如果没有指定则将使用该方法名作为bean的名称
- 可以指定bean的作用域,可以使用@Scope注解指定bean的作用域。默认情况下bean的作用域为单例(即在整个应用程序上下文中只有一个实例)
- 可以指定bean的初始化方法和销毁方法:可以使用@postConstruct和@PreDestroy注解指定bean的初始化方法和销毁方法
![]()
5 @Component+@ComponentScan
@Controller @Service @Repository都是基于@Component,默认如果我们的定义的@Component类都在SpringBoot启动类路径下,如果不在则需要添加@ComponentScan,如果不在则需要添加@ComponentScan来指定路径
6 FactoryBean接口
7 BeanDefinitionRegistryPostProcessor
参考文献
https://blog.csdn.net/2301_76607156/article/details/130424568

浙公网安备 33010602011771号