@Bean
内容目录

@Bean

概念

@Bean 用于在配置类中声明一个Bean的创建方法。

它告诉Spring容器,使用该方法的返回值作为Bean实例,并注册到Spring的Bean工厂中。

@Bean 注解可以包含属性,如 initMethoddestroyMethod,用来指定Bean的初始化和销毁方法。

通俗说法

@Bean 就像是在菜谱上的一个食谱条目,它详细说明了如何准备一道特定的菜(创建一个Bean实例),并且告诉厨房(Spring容器)这道菜应该加入菜单(Bean工厂)。

所属

org.springframework.context.annotation.Bean

作用

  • 在配置类中声明Bean的创建逻辑。
  • 控制Bean的生命周期,包括初始化和销毁方法。
  • 支持依赖注入,方法参数可以引用其他Bean。

用法

  • 放在配置类中的方法上,方法的返回值类型即为Bean的类型。
  • 可以通过方法参数来注入其他Bean,实现依赖关系的管理。

使用场景

  • 在配置类中定义和配置Bean。
  • 需要自定义Bean的创建逻辑和依赖关系。
  • 当需要对第三方库的类进行封装,以便更好地管理其生命周期时。

使用示例

@Configuration
public class AppConfig {

    @Bean
    public MyService myService() {
        return new MyServiceImpl();
    }

    @Bean
    public MyRepository myRepository() {
        return new MyRepositoryImpl();
    }
}

@Component & @Bean

@Component@Bean 都是Spring框架中用于定义和管理Bean的注解,它们服务于面向切面编程(AOP)和依赖注入(DI)机制,旨在简化配置和提升应用的模块化程度。

1、用法区别

@Component:

  • 通常用于类级别,标记一个类作为Spring的Bean组件。
  • 通过类路径扫描(如 @ComponentScan )自动发现并注册到Spring容器中。
  • 更适用于应用内部自己编写的类,尤其是那些构成应用核心业务逻辑的类。

@Bean:

  • 通常用于方法级别,在配置类中定义产生Bean实例的逻辑。
  • 方法体中可以包含创建Bean实例的具体过程,包括初始化设置等。
  • 适合于将第三方库的类转换为Spring管理的Bean,或者需要更多定制化配置的情况。
  • 需要在配置类中显式声明和使用。

2、作用区别

  • @Component 强调的是自动发现和注册,简化了Bean的定义过程,适用于大量自定义组件的批量注册。
  • @Bean 则提供了更多的灵活性和控制权,允许开发者精确控制Bean的创建过程,包括实例化、依赖注入以及配置等,适用于复杂或特殊配置需求的Bean定义。

总结

简而言之,

@Component 是基于约定优于配置的原则,简化了组件的注册过程,适用于应用内部组件的批量管理。

@Bean 则提供了更细粒度的控制,适用于需要明确指定Bean创建过程和配置的场景,特别是处理外部依赖或复杂逻辑时。

两者各有优势,根据具体需求选择合适的注解来定义和管理Bean。

版权声明:本文《@Bean》是由陶其原创撰写,首发于陶其的个人博客
转载声明:如需转载本文,请务必在转载处保留原文链接:https://www.tqazy.com/?p=101,并明确注明文章来源。
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇