ESFramewor使用技巧(3) -- 在插件中使用Spring.net

简介: 根据插件的“自治”性,插件如果需要配置信息,则插件应该自己能读取和修改配置信息,而不是框架或宿主来完成这些事情。这种松耦合特性,我们曾在ESFramework介绍之(29)―― 插件公共设施 AddinUtil 一文中特别强调过。

    根据插件的“自治”性,插件如果需要配置信息,则插件应该自己能读取和修改配置信息,而不是框架或宿主来完成这些事情。这种松耦合特性,我们曾在ESFramework介绍之(29)―― 插件公共设施 AddinUtil 一文中特别强调过。
    当一个插件非常复杂时,可能需要大量的配置信息或装配信息,使用Spring.net的IOC容器实现自动装配是一种非常方便的方法,我们的插件需要自己来操作Spring.net容器,而不是依赖于框架或宿主应用。而且,宿主应用通常也有自己的复杂的配置需要管理。在ESFramewor使用技巧(2)-- 在插件中使用NHibernate  中,我们已经提到过类似的情况--我们可以为插件添加一个App.Config(或Web.Config)配置文件,但是FS在加载这个插件的时候,Spring.net不会去触碰这个插件对应的App.Config,这样Spring.net就无法自动完成配置。所以,我们必须手动的解决这个问题。

    这个问题的解决方案需要注意三点:
(1)插件配置文件(即,插件用到的配置文件)的格式。
    插件配置文件中不再需要<configSections>,也不再需要 <spring>/<context>,而是直接从<objects>开始,比如一个经过简化的名为BusinessManagerAddin.config的插件配置文件:

<? xml version = " 1.0 "  encoding = " utf-8 "   ?>
< objects xmlns = " http://www.springframework.net "   >
    
< object  name = " keyNameMappingCollection "  type = " BusinessManagerAddin.KeyNameMappingCollection ,BusinessManagerAddin " >  
        
< property name = " AdoBaseManager "   ref = " adoBaseManager " />                              
    
</ object >           
    
    
< object  name = " adoBaseManager "  type = " BusinessManagerAddin.AdoBaseManager ,BusinessManagerAddin " >
        
< property name = " DataBaseType "  value = " Oracle " />         
    
</ object >
</ objects >

(2)手动注册插件配置文件:
    我们知道,通常App.config中的spring配置,是由Spring自己自动注册的,而插件的配置文件,由于前面提到的原因,需要我们手动注册,就像这样:

    FileSystemResource input  =   new  FileSystemResource( " Addins/BusinessManagerAddin.config " ) ;
    Spring.Objects.Factory.IObjectFactory objFactory 
=   new  Spring.Objects.Factory.Xml.XmlObjectFactory(input); 

    通常,配置文件的注册可以在插件的生命周期OnLoading方法中进行。

(3)在宿主应用App.Config(或Web.Config)中添加探测路径。
    我们通常将所有的插件放在AppBase目录下的Addins目录下。插件配置文件中的组件很多可能在插件自身中定义,如果没有在宿主的App.Config(或Web.Config)中添加对应的探测路径,Spring容器才创建组件对象时,会找不到对应的类型定义。所以我们需要像下面这样添加探测路径:

     < runtime >  
        
< assemblyBinding xmlns = " urn:schemas-microsoft-com:asm.v1 " >  
            
< probing privatePath = " Addins " />  
        
</ assemblyBinding >  
    
</ runtime >  

    其实,不仅仅是在插件中,你在任何dll中,如果这个dll需要使用自己的Spring配置文件,都可以通过上述介绍的解决问题。


转到  :ESFramework 可复用的通信框架(序) 


 

目录
相关文章
|
6月前
|
XML 编解码 Java
Spring Boot 中的 RestTemplate和Retrofit 插件很好
Spring Boot 中的 RestTemplate和Retrofit 插件很好
132 1
|
6月前
|
XML 开发框架 .NET
ASP.NET COR3.1 集成日志插件NLog
ASP.NET COR3.1 集成日志插件NLog
79 0
|
6月前
|
移动开发 前端开发 Java
使用ipaguard插件对Spring Boot程序进行代码混淆
使用ipaguard插件对Spring Boot程序进行代码混淆
106 0
|
Java 数据库连接 数据库
MyBatis与Spring集成&常用注解以及AOP和PageHelper分页插件整合
MyBatis与Spring集成&常用注解以及AOP和PageHelper分页插件整合
98 0
|
26天前
|
开发框架 JavaScript 前端开发
一个适用于 ASP.NET Core 的轻量级插件框架
一个适用于 ASP.NET Core 的轻量级插件框架
|
26天前
|
前端开发 JavaScript C#
CodeMaid:一款基于.NET开发的Visual Studio代码简化和整理实用插件
CodeMaid:一款基于.NET开发的Visual Studio代码简化和整理实用插件
|
5月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
53 1
|
5月前
|
JSON 开发框架 API
【推荐100个unity插件之20】一个强大的JSON处理库——Newtonsoft.Json(也称为Json.NET)
【推荐100个unity插件之20】一个强大的JSON处理库——Newtonsoft.Json(也称为Json.NET)
383 0
|
6月前
|
Java Maven Spring
maven打包插件maven-jar-plugin与spring-boot-maven-plugin
该内容介绍了两个Maven打包插件:`spring-boot-maven-plugin`和`maven-jar-plugin`。`spring-boot-maven-plugin`是Spring Boot项目的默认打包工具,它会包含项目类文件、资源和依赖的jar,但不会解编译依赖。而`maven-jar-plugin`则用于创建普通JAR包,不包含依赖。文中还展示了两个插件打包后的效果差异,并强调了持续练习以掌握这些技能的重要性。
142 0
|
Java 数据库连接 测试技术
Spring与MyBatis集成 AOP整合PageHelper插件
Spring与MyBatis集成 AOP整合PageHelper插件
56 0