当前位置: 首页 > 面试题库 >

Spring@Component与@Bean

孙翰墨
2023-03-14
问题内容

我了解到@Component注释是在Spring 2.5中引入的,目的是通过使用类路径扫描摆脱xml bean的定义。

@Bean是在Spring 3.0中引入的,可以与之一起使用,@Configuration以完全摆脱xml文件并改用java config。

是否有可能重新使用@Component注释而不是引入@Bean注释?我的理解是,两种情况下的最终目标都是创建bean。


问题答案:

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

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

@Bean用于显式声明单个bean,而不是像上面那样让Spring自动执行。它使Bean的声明与类定义脱钩,并允许你完全按照自己的选择创建和配置Bean。

要回答你的问题…

是否有可能重新使用@Component注释而不是引入@Bean注释?

当然可以;但他们选择不这样做,因为两者是完全不同的。spring已经很混乱了,又没有使水更浑浊了。



 类似资料:
  • 此绑定用于将组件插入DOM元素并可选地传递参数。 这种绑定可以通过以下两种方式实现 - Shorthand Syntax Full syntax 速记语法 在此方法中,仅指定组件名称而不指定任何参数。 Syntax <div data-bind = 'component: "component-name"'></div> 传递的参数值可以是可观察的。 因此,每当可观察的更改时,将丢弃旧的组件实例

  • 本文向大家介绍Spring @Configuration和@Component的区别,包括了Spring @Configuration和@Component的区别的使用技巧和注意事项,需要的朋友参考一下 Spring @Configuration 和 @Component 区别 一句话概括就是 @Configuration 中所有带 @Bean 注解的方法都会被动态代理,因此调用该方法返回的都是同

  • 嗨,我正在使用sprinb-boot2中的致动器,具有以下属性 我的目标是禁用除健康之外的所有endpoint。通过此配置,我禁用了除health以外的所有endpoint,现在获取以下endpoint。是否可以同时禁用?怎么做的?

  • 使用和使用有什么区别吗?如果没有,是否有一种首选的方法?

  • 介绍 (Introduction) 类Component是AWT的非菜单用户界面控件的抽象基类。 Component表示具有图形表示的对象。 类声明 以下是java.awt.Component类的声明: public abstract class Component extends Object implements ImageObserver, MenuContainer, S

  • 介绍 (Introduction) 类Component是AWT的非菜单用户界面控件的抽象基类。 Component表示具有图形表示的对象。 Class 声明 (Class Declaration) 以下是java.awt.Component类的声明 - public abstract class Component extends Object implements Image