gpt4 book ai didi

java - Spring中是否强制为每个声明的bean指定一个id?

转载 作者:行者123 更新时间:2023-12-01 22:26:18 26 4
gpt4 key购买 nike

我正在学习 Spring Core 认证,我对这个旧考试模拟中发现的以下问题有一些疑问(这与 Spring v3 有关,现在有 v4,但我认为很多主题都是相同的) .

给定以下 Spring 配置文件,正确答案是什么:

<bean class ="com.spring.service.MyServiceImpl">
<property name="repository" ref="jpaDao" />
</bean>

<bean class="com.spring.repository.JpaDao"/>
  1. 第一个声明的 bean MyServiceImpl 缺少 id,必须命名为 myService。

  2. 第二个声明的 bean JpaDao 缺少 id,必须命名为 jpaDao

  3. 答案1和2都是正确的

  4. 答案 1 和 2 都是错误的

我最初的想法是,两个答案都是正确的,因为两个 bean 都没有指定 id,所以如果第二个 bean 确实需要 id=jpaDao 因为第一个 bean 使用它作为引用我认为首先还需要一个身份证。不然怎么称呼呢? (也在工厂的代码中?)

但是阅读模拟中发现的答案,它说正确的答案是第二个。

那么这意味着什么呢?在 Spring 中不是强制为每个 bean 指定一个 id 吗?如果这是真的,如果没有 id,我如何使用工厂引用或实例化第一个 bean?我错过了什么?

Tnx

最佳答案

这是一个棘手的问题。 Spring 默认情况下会自动创建 ID。因此,下列定义是正确的:

<bean class="com.spring.repository.JpaDao"/> 

但是自动创建的bean ID是完全限定的类名。然而,您的第一个 bean 引用 ID 为 jpaDao 的 bean。这意味着你需要这样的bean。确保这一点的方法是显式定义 id:

<bean id="jpaDao" class="com.spring.repository.JpaDao"/> 

这就是为什么只有第二个答案是正确的。

关于java - Spring中是否强制为每个声明的bean指定一个id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28723807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com