春季:@Component与@Bean

2022-08-31 04:11:54

据我所知,注释是在春季2.5中引入的,以便通过使用类路径扫描来摆脱xml Bean定义。@Component

@Bean在 spring 3.0 中引入,可以一起使用,以便完全摆脱 xml 文件并使用 java 配置。@Configuration

是否可以重用注释而不是引入注释?我的理解是,在这两种情况下,最终目标是创造豆类。@Component@Bean


答案 1

@Component首选组件扫描和自动接线。

何时应使用@Bean

有时,自动配置不是一个选项。什么时候?假设您希望从第三方库中连接组件(您没有源代码,因此无法使用@Component注释其类),因此无法进行自动配置。

@Bean注释返回一个对象,spring 应在应用程序上下文中将其注册为 bean。该方法的主体具有负责创建实例的逻辑。


答案 2

@Component并做两件完全不同的事情,不应该混淆。@Bean

@Component(and and ) 用于使用类路径扫描自动检测和自动配置 Bean。在带注释的类和 Bean 之间存在隐式的一对一映射(即每个类一个 Bean)。使用这种方法,对布线的控制非常有限,因为它纯粹是声明性的。@Service@Repository

@Bean用于显式声明单个豆子,而不是让Spring像上面那样自动执行此操作。它将 Bean 的声明与类定义分离,并允许您完全按照自己的选择创建和配置 Bean。

要回答您的问题...

是否可以重用注释而不是引入注释?@Component@Bean

当然,可能;但他们选择不这样做,因为两者完全不同。春天已经足够混乱了,而不会进一步搅浑水。


推荐