Springboot 配置类里方法为啥加了Bean注解?

Posted 码不停Ti

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot 配置类里方法为啥加了Bean注解?相关的知识,希望对你有一定的参考价值。

Springboot 配置类里方法为啥加了Bean注解?

这个问题 困扰这我
查了一下 官方的文档

使用MVC Java编程进行高级定制

给的样例是这样的
解释就是 重新定制配置了一下 不过我还是 不太懂

@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逻辑,具体使用方法如下:

大白话讲解Spring的@bean注解

摘抄 核心一段

不知道大家有没有想过,用于注册Bean的注解的有那么多个,为何还要出现@Bean注解?

原因很简单:类似@Component , @Repository , @ Controller , @Service 这些注册Bean的注解存在局限性,只能局限作用于自己编写的类,如果是一个jar包第三方库要加入IOC容器的话,这些注解就手无缚鸡之力了,是的,@Bean注解就可以做到这一点!当然除了@Bean注解能做到还有@Import也能把第三方库中的类实例交给spring管理,而且@Import更加方便快捷,只是@Import注解并不在本篇范围内,这里就不再概述。

使用@Bean注解的另一个好处就是能够动态获取一个Bean对象,能够根据环境不同得到不同的Bean对象。

使用场景

的确 我看到这个注解的时候 是引用了 一个第三方的 类库,同时要根据 自己的环境 进行适配,默认 文件 一般都是 按照 插件需求,在 配置文件 写好配置信息,便会自动 读取相关的配置信息,但是如果需要有 更定制的配置 注入工具 bean 就需要 配置类进行 加载。

以上是关于Springboot 配置类里方法为啥加了Bean注解?的主要内容,如果未能解决你的问题,请参考以下文章

Thymeleaf调用Springboot bean的方法

为啥在 Spring Boot 中超类上的 @Bean 泛型创建方法比子类上的方法调用晚?

javabean为啥不能在实体类里写逻辑

在SpringBoot用普通类调用Spring管理的Bean

Controller类的方法上的RequestMapping一定要写在Controller类里吗?

关于加了hibernate 框架的项目启动特别慢的问题