java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Spring最核心的注解@Bean本质

Spring最核心的注解@Bean本质用法及说明

作者:tuokuac

文章解释了`@Bean`注解的本质以及如何在Spring中使用它来管理Bean, `Bean`注解告诉Spring执行该方法并把返回值作为Bean进行容器管理, 春看到`@Bean`会自动调用方法获取返回值,将返回的对象放进容器中管理, 通过这种方式,其他类可以直接注入使用这些Bean.

Spring 最核心的注解@Bean本质

直接给你一句话戳穿本质,马上彻底懂

答案:

这个方法本身不是 Bean,方法执行后返回的对象才是 Bean!

Spring 会把这个返回的对象放进容器里管理!

用最通俗的话讲@Bean原理

看这段代码:

@Configuration // 配置类
public class MesaageConfig {

    // 加了 @Bean 的方法
    @Bean
    public MessageConverter messageConverter() {
        // 1. 自己 new 对象
        Jackson2JsonMessageConverter converter = new Jackson2JsonMessageConverter();
        // 2. 自己配置对象
        converter.setCreateMessageIds(true);
        // 3. 返回对象
        return converter; 
    }
}

Spring 看到@Bean会做什么?

Spring 会自动调用这个方法,拿到返回值,然后:

总结:

@Bean = 告诉 Spring:执行我这个方法,把返回的对象给我当成 Bean 管理!

问:它不是方法吗?怎么成 Bean 了?

画个等号你就懂了:

@Bean
public 消息 造消息的方法() {
    造一个消息...
    return 消息; // Spring 拿走这个「消息」当 Bean
}

这个 Bean 怎么用?

其他类里直接注入就能用:

@Service
public class MessageService {

    // 直接注入!Spring 自动把上面方法返回的对象给你
    @Autowired
    private MessageConverter messageConverter;
}

@Bean和 类注解(@Service/@Component)区别

方式注解适用场景
自己写的类@Service @Component类是你写的,直接加注解
别人写的类(Jackson、RabbitTemplate…)@Bean类不是你写的,你需要new 出来 + 配置,交给 Spring

你的场景:

Jackson2JsonMessageConverter别人写的类,你需要:

→ 必须用 @Bean

终极总结(背下来)

最直白的一句:

你写的是方法,但 Spring 要的是你方法 return 出来的那个对象!

再给你对应一下:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文