嗯,看起來這部分是本書正確:
默認情況下,bean將被給予與@ Bean註釋的方法名稱相同的ID
但它看起來也像書本是inc orrect在這一部分:
在這種情況下,bean將被命名爲compactDisc
我創建了一個快速的應用程序,其中,給予以下psvm
public class MyApp {
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(MyConfig.class);
// 1) This bean name will not be found, the method name is sgtPeppers
CompactDisc compactDisc = ctx.getBean("compactDisc", CompactDisc.class);
System.out.println("app 1: " + compactDisc.toString());
// 2) this bean will be found
SgtPeppers sgtPeppers = ctx.getBean("sgtPeppers", SgtPeppers.class);
System.out.println("app 2: " + sgtPeppers.toString());
CdPlayer cdPlayer = ctx.getBean("cdPlayer", CdPlayer.class);
System.out.println("app 3: " + cdPlayer.toString());
}
}
而且MyConfig.java
看起來像這樣:
@Configuration
public class MyConfig {
@Bean
public CompactDisc sgtPeppers() {
return new SgtPeppers();
}
@Bean
public CdPlayer cdPlayer(CompactDisc compactDisc) {
return new CdPlayer(compactDisc);
}
}
將爲您提供例外
線程「main」org.springframework.beans.factory中的異常。NoSuchBeanDefinitionException:無豆命名爲「compactDisc」可用
但是,如果我改變compactDisc
的@Bean-annotated
方法名的例外是不同的。它讀取:
異常線程 「main」 org.springframework.beans.factory.NoSuchBeanDefinitionException:無豆命名爲 'sgtPeppers' 可用
簡而言之,是的,它看起來像書有一個錯誤... :)
指https://docs.spring.io /spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Bean.html –
這看起來好像是書中的一個錯字,你試過了嗎?如果我有時間,我會自己試試 – ochi
@ochi,你是對的!我看了一下本書的源代碼。 – KhoaTran