java移除组件_javashop v6.2 或将移除组件的component.xml文件,采用注解代替 – Javashop官方亚博博客...

注解說明:移步 == 》

首先說明一下已有組件的原理:

❤️在系統啟動,spring加載時,我們判定一個即將實例化到spring容器中的對象否實現組件接口,如果實現則將其寫入組件上下文(ComponentContext)的靜態變量集合中,并且加載component.xml文件,生成ComponentView(組件視圖)和PluginVIew(插件視圖)

❤️自定義的監聽器(EopContextLoaderListener)執行時,啟動組件。根據ComponentView和PluginView正確生成可以正確調用插件的插件樁

修改后的邏輯

❤️在系統啟動,spring加載時,我們判定一個即將實例化到spring容器中的對象否實現特定接口,如果實現 組件借口(IComponent) 則將其寫入組件上下文(ComponentContext)的靜態變量集合中,如果實現了插件接口(IPlugin)則將其寫入插件上下文(PluginContext)

❤️自定義的監聽器(EopContextLoaderListener)執行時,獲取組件上下文中所有的組件,循環遍歷從插件上下文中獲取到組件對應的插件集合,根據每個組件和插件的注解,映射出正確的ComponentView(組件視圖)和PluginVIew(插件視圖)。隨后,啟動組件,根據ComponentView和PluginView正確生成可以正確調用插件的插件樁。

注解類講解:

插件注解

CustomPlugin(自定義插件注解)

插件名稱public String name() default “默認插件”;

組件public String component() default “組件id”;

插件public String plugin() default “插件id”;

執行優先級(保留字段 控制執行順序) public int sort() default 10;

插件樁集合public String[] bundle() default “”;

CustomComponent(自定義組件注解)

組件名稱public String name() default “默認組件”;

組件idpublic String beanid() default “”;

版本public String version() default “1.0”;

javashop版本public String javashop_version() default “3.0.0”;

作者public String author() default “javashop”;

描述public String description() default “默認描述”;

屬性字段基本和component.xml的配置具體參數沒什么區別, 所以修改為注解的形式沒有大的改動,只是更改了生成 ComponentView和PluginView的方式。

注解使用

QQ20160623-7.png

在組件插件具體的類上,聲明注解即可。

以上是對注解方式的組件的具體使用解釋,接下來講解連帶的其它變更

1、組件加載

ComponentLoader(組件加載)在bean實例化之前的方法中,加入了插件上下文(PluginContext)的注冊。

新增的插件上下文主要包含一個靜態Map類型,key存組件的beanid,value存該組件的插件集合。

2、組件注冊

ComponentContext(組件上下文)的注冊組件方法中原本加載組件視圖的方法被移除

3、組件啟動

EopContextLoadListener(Eop上下文啟動監聽器)中,組件啟動前,獲取組件上下文中所有的組件視圖,然后執行組件加載視圖方法。(也就是在組件注冊時的方法被延后執行)

隨后執行原本的組件啟動方法。

*********************************************主要修改部分************************************************

ComponentContext組件上下文核心方法loadComponent修改,為了兼容老版本的組件機制,這里對Bean是否聲明了組件注解進行判定:

如果沒有聲明,那么按照傳統的方法獲取component.xml生成組件插件視圖。

如果有聲明,則獲取注解信息進行組件和插件視圖的生成。

*********************************************************************************************************

為什么組件機制使用注解實現

spring用注解的方式來管理容器中bean的關系,是所有人看的到到優點,使用注解之前,采用在xml中配置文件的繁瑣程度不言而喻。使用注解唯一的缺點不外乎是管理松散,不能概括的了解組件、插件和插件樁的關系。但是只要項目結構足夠合理,我相信這個問題是可以避免的。

拋開這些不說,作為一個程序員,喜歡看起來可以裝X的代碼,拋棄xml配置文件才用注解在個人看來是一個提升逼格的方法。哈哈哈哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值