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使用