一直使用spring 的注解,却不太知道其中的运行机制,记录一下大概的流程
1、程序启动是自动加载bean.xml 文件
2、根据xml示例化bean对象
3、遍历每个bean对象,查找里面的属性成员是否有对应注解需要解析
关键代码如下:
if(field.isAnnotationPresent(MyResource.class)){
MyResource resource=field.getAnnotation(MyResource.class);
Object value=null;
if(resource.name()!=null&&!"".equals(resource.name())){
value=sigletons.get(resource.name());
}else {
value=sigletons.get(field.getName());
if(value==null){
for(String key:sigletons.keySet()){
if(field.getType().isAssignableFrom(sigletons.get(key).getClass())){
value=sigletons.get(key);
break;
}
}
}
}
}
1)先按 注解 name 与bean 对象进行比较,有直接返回,
2)若无按属性的 name 进行比较,有直接返回,
3)若无按属性类型与bean类型进行比较,有直接返回