看spring源码也有几天了,这个时候才想起来写博客,惭愧啊。今天看的是解析bean的子元素,就我个人而言,部分子元素确实用的不多
1.meta 元数据,当需要使用里面的信息是用key获取值,通过BeanDefinition的getAttribute(key)获取值,spring解析的时候通过BeanMetadataAttribute类来承载解析出来的key和value,解析方法在BeanDefinitionParserDelegate类中 ,parseMetaElements
2.lookup-method 被称为获取器注入,它是把一个方法声明为返回某种类型的bean,其实这个bean在配置文件中配置的,此方法可以用在有些插拔功能上,解除程序依赖,可以在方法里声明一个抽象方法,因为返回的bean在配置文件中配置的,所以抽象方法足以。解析方法为parseLookupOverrideSubElements(),解析过后通过LookupOverride类承载解析出来的信息
3.replacer-method 方法替换 在运行时用新的方法替换现有的方法 可以动态的返回实体bean,还能动态的更改原有方法的逻辑,更改逻辑等可以新建一个类实现MethodReplacer接口 ,MethodReplacer接口里只有一个方法
Object reimplement(Object var1, Method var2, Object[] var3) throws Throwable;
解析的方法是parseReplaceMethodSubElements,解析后通过ReplaceOverride类承载
以上这三个笔者确实用的不多啊,但是接下来这个constructor-arg相信不会陌生,配置好后,对于spring是怎么解析他的呢,其实是通过parseConstructorArgElements()实现的,
遍历所有子元素,提取constructor-arg的子元素,然后进行解析,但是具体的解析方法又是通过另外一个方法实现的,parseConstructorArgElements()提取constructor-arg的子
元素,真正解析的在parseConstructorArgElement方法中