自动装配优先级

发布于 2024-10-25 08:21:43 字数 285 浏览 2 评论 0原文

<beans default-autowire="byType" />

意味着如果不超过 1 个具有所需类型的 bean,则 bean 的所有字段都会自动注入依赖项。

我想知道是否有一种方法可以在存在多个所需类型的 bean 的情况下为自动装配定义某种优先级顺序(例如基于命名约定)。
提前致谢。

编辑:我只是想补充一点,我不允许在我当前正在处理的项目中使用 @Component 和 @Qualifier 等注释。

<beans default-autowire="byType" />

means that all fields of beans will automatically have dependencies injected if there is no more than 1 bean with the desired type.

I wonder if there is a way to define some sort of priority order (based on naming convention for example) for the auto-wiring in the case where there are more than one bean of the desired type.
Thanks in advance.

Edit: I just want to add that i'm not allowed to use annotations such as @Component and @Qualifier in the project i'm currently working on.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

好听的两个字的网名 2024-11-01 08:21:43

不,没有,但是您可以根据每个 bean 的需要覆盖此行为,例如在需要时指定类似的内容:

<beans default-autowire="byType" >
    <bean id="..." autowire="byName">
        ....
    </bean>
</beans>

从 spring 2.5 向上,当使用 to autowire beans 时通过 @ Autowired 您还可以添加@Qualifier 如果存在多个相同类型的 bean,则需要按名称指定 bean。

正如 Spring 文档中所述 有几种不同的方式来指定自动装配:

  • no - 不自动装配,这是默认的
  • byType - 属性类型必须与 bean 类型匹配,如果有多个 bean该类型存在,则抛出异常
  • byName - bean 名称必须与属性名称匹配
  • 构造函数 - 与 byType 基本相同,但对于构​​造函数,spring 选择最匹配的构造函数
  • 自动检测 - 与 byType 相同,除非没有默认构造函数,它会回退到构造函数自动装配

No there is not, but you can override this behavior as needed for each bean e.g.specify something like this where required:

<beans default-autowire="byType" >
    <bean id="..." autowire="byName">
        ....
    </bean>
</beans>

From spring 2.5 upwards when using the <context:component-scan/> to autowire beans via @Autowired you can also add @Qualifier where needed to specify a bean by name if there are multiple beans of the same type.

As stated in the spring documentation there are a few different ways to specify autowiring:

  • no - do not autowire, this is the default
  • byType - property type must match bean type, if more than one bean of that type is exists then an exception is thrown
  • byName - bean name must match property name
  • constructor - basically the same as byType but for constructors, spring picks the constructor with the most matches
  • autodetect - same as byType unless there is no default constructor where it falls back to constructor autowiring
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文