rose-scanning reading
2014-02-21 16:17
411 查看
rose-scanning的功能
把classpath中使用rose的jar包和folder都生成资源对象,供spring读取里面的bean到beanfactory中(更准确是的RoseAppContext或RoseWebAppContext)。自动打开annotation识别,不用再在xml中配置。
处理过程
new RoseAppContext或RoseWebAppContext,后面用RoseAppContext代替。RoseAppContext构造函数中最后会调用在父类AbstractApplicationContext中实现的的#refresh()方法。
在#refresh()方法中会调用一些列方法,最后调用到AbstractXmlApplicationContext#loadBeanDefinitions(XmlBeanDefinitionReader reader),这个里面会调用RoseAppContext中重写的#getConfigResources()方法。这个方法是为了获取xml配置文件的位置,然后让后面的reader去读取到Context中。
在#getConfigResources()方法中调用RoseResources#findContextResources(),这个方法会根据new Context的时候传的scope来查找配置成Rose的Jar或者Folder。是通过写META-INF/rose.propertie或者manifest写rose=xxx来配置成Rose。如果写了rose=xxx就会被构建成ResourceRef(resource(jar or folder) + modifiers(xxx))
rose=xxx是有规定的xxx=*,controllers,dao,messages,applicationContext,单独scanning包的话,只有messages和applicationContext。
不符合规定的xxx(modifiers)会被过滤掉,而符合规定的会被转成Spring的resource,供Spring使用。
在#refresh()方法中会调用RoseAppContext中重写的prepareBeanFactory()。这个方法在RoseAppContext中只会注册‘注解配置处理器’,而在RoseWebAppContext中除了注册‘注解配置处理器’以外,还会注册获取Message和注册Message
扩展Spring的方式
在构造函数里面调用refresh方法通过重写 getConfigResources和 prepareBeanFactory
阅读建议
如果不想了解spring,就直接从RoseAppContext#getConfigResources()开始看,这个里面就包含了scanning的主要功能。如果想了解Spring就直接从#refresh()中跟。到Spring中的时候最好在旁边放一个context类图,这样才能搞清他们的关系,方便阅读。
其他
RoseScanner是单例模式,里面有classesFolderResources和jarResources,当下次再使用这个类扫描的时候,就会直接返回这两个面的资源相关文章推荐
- A brief summary of UML & Rational Rose –Activity Diagram & Statechart Diagram & other diagrams , Part V
- Rose Data Modeler与数据库的建模
- Rose与VSS集成的几个问题
- 建模就用Rose的时代宣告结束
- Retional rose的安装问题
- 建模工具Rose的学习(1)
- 建模工具Rose的学习
- 将rose中的图导出的方法(转)
- Rational Rose enterprise 7.0.0.1
- ROSE 2003安装完后启动提示"java.lang.ClassNotFoundException"。
- Rose 2003 在 Xp Home不能安装的解决方案(转载)
- 对比Rose与PowerDesigner两款建模工具
- Rose与PowerDesigner:两款建模工具对比分析比较
- rose 启动去掉版本提示
- rose中的组合
- win7下安装rose
- UML--Rational Rose Enterprise Edition 2003 installation step(share from cnblogs)
- RoseHA集群:RHEL+RoseMirror+Oracle【2】
- Rose与PowerDesigner:两款建模工具对比分析比较
- IndigoRose.AutoPlay.Media.Studio.v8.1.retail-FOSI