Springboot@Configuration和@Bean详解
Posted javafucker
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot@Configuration和@Bean详解相关的知识,希望对你有一定的参考价值。
[email protected]和@Bean详解
一、@Configuration
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface Configuration { @AliasFor( annotation = Component.class ) String value() default ""; }
可以看到在@Configuration注解中是包含@Component注解的,被@Configuration修饰的类被定义为一个Spring容器(应用上下文)
@Configuration就相当于Spring配置文件中的<beans />标签,里面可以配置bean
二、@Bean
@Bean相当于Spring配置文件中的<bean />标签可以在Spring容器中注入一个bean
@Configuration public class TestConfiguration { @Bean public TestBean testBean() { return new TestBean(); } }
上述代码相当于实例化一个TestBean并交给Spring容器管理
ps:
1、@Bean注解在返回实例的方法上,如果未通过@Bean指定bean的名称,则默认与方法名相同
2、@Bean注解默认作用域为单例singleton作用域,可通过@Scope(“prototype”)设置为多例
三、依赖注入
@Configuration public class TestConfiguration { @Bean public TestBean testBean() { return new TestBean(); } @Bean public DIBean diBean() { return new DIBean(testBean()); } }
如上述代码,通过在@Bean方法中调用其他@Bean注解的方法来实现依赖注入
ps:
当需要强制指定实例化bean的顺序,可以通过@Order或@DependsOn注解来实现
以上是关于Springboot@Configuration和@Bean详解的主要内容,如果未能解决你的问题,请参考以下文章
springboot @Configuration @bean注解作用
idea中的springboot+gradle项目报错springboot configuration annotation processor not found in classpath
第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等