Springboot 配置类里方法为啥加了Bean注解?
Posted 码不停Ti
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot 配置类里方法为啥加了Bean注解?相关的知识,希望对你有一定的参考价值。
Springboot 配置类里方法为啥加了Bean注解?
这个问题 困扰这我
查了一下 官方的文档
给的样例是这样的
解释就是 重新定制配置了一下 不过我还是 不太懂
@Configuration
public class WebConfig extends DelegatingWebMvcConfiguration {
@Override
public void addInterceptors(InterceptorRegistry registry){
// ...
}
@Override
@Bean
public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
// 自己创建适配器,或者调用super让基类处理
// 然后在这里定制bean的一些属性
}
}
回到源头查了一下 @Bean 的注解
通过@Bean注解配置类中的相应方法,则该方法名默认就是Bean名,该方法返回值就是Bean对象,并定义了Spring IoC容器如何实例化、自动装配、初始化Bean逻辑,具体使用方法如下:
摘抄 核心一段
不知道大家有没有想过,用于注册Bean的注解的有那么多个,为何还要出现@Bean注解?
原因很简单:类似@Component , @Repository , @ Controller , @Service 这些注册Bean的注解存在局限性,只能局限作用于自己编写的类,如果是一个jar包第三方库要加入IOC容器的话,这些注解就手无缚鸡之力了,是的,@Bean注解就可以做到这一点!当然除了@Bean注解能做到还有@Import也能把第三方库中的类实例交给spring管理,而且@Import更加方便快捷,只是@Import注解并不在本篇范围内,这里就不再概述。
使用@Bean注解的另一个好处就是能够动态获取一个Bean对象,能够根据环境不同得到不同的Bean对象。
使用场景
的确 我看到这个注解的时候 是引用了 一个第三方的 类库,同时要根据 自己的环境 进行适配,默认 文件 一般都是 按照 插件需求,在 配置文件 写好配置信息,便会自动 读取相关的配置信息,但是如果需要有 更定制的配置 注入工具 bean 就需要 配置类进行 加载。
以上是关于Springboot 配置类里方法为啥加了Bean注解?的主要内容,如果未能解决你的问题,请参考以下文章
为啥在 Spring Boot 中超类上的 @Bean 泛型创建方法比子类上的方法调用晚?
在SpringBoot用普通类调用Spring管理的Bean