1.概述
當使用Spring註解@Componet標註某個類時,可以指定id,如果不指定id,那麼默認會是類名的小寫,這是spring的一個推斷功能。spring的推斷功能是符合外國人的習慣,如Person,第二個字母是小寫,按照習慣應該是一個單詞,推斷出的是person。而NBA,第二個字母是大寫,按照習慣不是一個單詞,則保持不變,推斷出是NBA.
2.代碼示例
創建類PErson3,pErson4,person5,在person5 上通過註解@Component("per5") 指定id爲per5。
//PErson3
@Component
public class PErson3 {
}
//pErson4
@Component
public class pErson4 {
}
//person5
@Component("per5")
public class person5 {
}
在web.xm 中配置包掃描
<!--配置IOC包掃描-->
<context:component-scan base-package="cn.ww.domain"/>
編寫測試類:
@Test
public void test02(){
//1.初始化Spring容器
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.獲取bean
PErson3 p3 = (PErson3) context.getBean("PErson3");
System.out.println(p3);
pErson4 p4 = (pErson4) context.getBean("pErson4");
System.out.println(p4);
person5 p5 = (person5) context.getBean("per5");
System.out.println(p5);
//3.關閉容器
((ClassPathXmlApplicationContext)context).close();
}
根據id運行結果爲:
根據上面的結果可以得出結論:
註解方式實現IOC - id推斷規則:
1.如果手動指定過id: 則採用指定id 如果沒有手動指定過id 則通過類名自動推斷id
2.如果沒有手動指定過id:看類名的第二個字母
2.1如果第二個字母是小寫,則類名首字母轉小寫作爲id使用
2.2如果第二個字母是大寫,則類名首字母保持不變作爲id使用