`
wangchuanyin
  • 浏览: 31650 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

插件开发中与spring集成遇到的问题

 
阅读更多
场景
    1.我把spring的所有jar包到放到一个插件中比如叫third-spring插件。
    2.MyTest插件依赖third-spring插件。application.xml配置文件我放在MyTest插件的classPath里。
    第一步基于模块化编程中的可重用性思想,将其作为公共插件。
    这个时候如果在MyTest中使用

ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("res/applicationContext.xml");
这个时候会报file not found。文件找不到

原因分析:
我们都知道插件开发一个很重要的一点就是每个插件都有自己的classLoader,这也是模块化编程思想
的一个明显的标志。
造成这个问题,就是因为你拿着别人的classLoader去加载自己的资源。人家看不到你。所以告诉你找不到。表面上你以为现在运行的是你的代码,可当时线程中使用的却不一定是你的classLoader。
解决方案:ClassPathXmlApplicationContext applicationContext ;
final ClassLoader cl = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
} finally {
Thread.currentThread().setContextClassLoader(cl);
}
在加载资源的地方先把线程上下文中的classLoader切换成自己的。最后再替换回来。
在实际应用中可能遇到的比这还复杂。但是决大多数,是因为classLoader问题引起的
分享到:
评论

相关推荐

    基于Spring MVC 和 WxJava 实现的微信公众号Java后端Demo

    新手遇到问题,请务必先阅读【开发文档首页】的常见问题部分,可以少走很多弯路,节省不少时间。 还有其他问题的,请 到此 提问讨论; 配置: 复制 /src/main/resources/wx.properties.template 或者修改其扩展名生成...

    springboot_study-master.zip

    进阶篇(11—17课)主要是介绍 Spring Boot 在项目中拔高一些的技术点,包括集成的一些组件,旨在带领学习者在项目中遇到具体的场景时能够快速集成,完成对应的功能。该部分以 Spring Boot 框架为主线,内容包括拦截...

    xmljava系统源码-xJavaFxTool-spring:基于JavaFx和SpringBoot搭建的实用小工具集合,方便开发过程中的代码

    xJavaFxTool-spring是使用javaFx开发的实用小工具集,目前项目刚刚建立,利用业余时间把工作中遇到的一些问题总结起来,打包进小工具集中,供大家参考和使用,里面包含了javaFx的一些功能的示例,如布局、国际化、第...

    ExtJS 4.2+JAVA通用后台管理系统(ExtJS 4.2+Hibernate 4.1.7+Spring MVC 3.2.8)

    Spring MVC 3.2.8支持的最高Hibernate版本是4.1.7,更高的Hibernate版本和Spring MVC 3.2.8组合会遇到兼容问题。 4、Hibernate集成二级缓存框架Ehcache。 5、数据库是MySQL、Oracle和SQL Server,Hibernate的Dialect...

    最新JAVA通用后台管理系统(ExtJS 4.2+Hibernate 4.1.7+Spring MVC 3.2.8)MyEclipse版本

    Spring MVC 3.2.8支持的最高Hibernate版本是4.1.7,更高的Hibernate版本和Spring MVC 3.2.8组合会遇到兼容问题。 4、Hibernate集成二级缓存框架Ehcache。 5、数据库是MySQL、Oracle和SQL Server,Hibernate的Dialect...

    最新JAVA通用后台管理系统(ExtJS 4.2+Hibernate 4.1.7+Spring MVC 3.2.8)Eclipse版本

    Spring MVC 3.2.8支持的最高Hibernate版本是4.1.7,更高的Hibernate版本和Spring MVC 3.2.8组合会遇到兼容问题。 4、Hibernate集成二级缓存框架Ehcache。 5、数据库是MySQL、Oracle和SQL Server,Hibernate的Dialect...

    微慕WordPress小程序开源版.zip

    技术支持和社区资源:Java和Spring Boot拥有广泛的技术支持和丰富的社区资源,可以帮助你解决开发过程中遇到的问题。Vue.js也有一个庞大的社区和生态系统,可以提供大量的插件和组件库。 开发效率和团队技能:Java...

    前端知识图谱+B站视频整合,以后会不断升级 .zip

    技术支持和社区资源:Java和Spring Boot拥有广泛的技术支持和丰富的社区资源,可以帮助你解决开发过程中遇到的问题。Vue.js也有一个庞大的社区和生态系统,可以提供大量的插件和组件库。 开发效率和团队技能:Java...

    yshop基于当前流行技术组合的前后端分离商城系统.zip

    技术支持和社区资源:Java和Spring Boot拥有广泛的技术支持和丰富的社区资源,可以帮助你解决开发过程中遇到的问题。Vue.js也有一个庞大的社区和生态系统,可以提供大量的插件和组件库。 开发效率和团队技能:Java...

    Extjs4.0通用后台管理系统源码完整大型项目可二次开发

    系统可作为OA、网站、电子...Spring MVC 3.2.8支持的最高Hibernate版本是4.1.7,更高的Hibernate版本和Spring MVC 3.2.8组合会遇到兼容问题。 4Hibernate集成二级缓存框架Ehcache。 5数据库是MySQL、Oracle和SQL Serv

    JessMA Java Web 应用开发框架 (v3.2.2-20130815).pdf

    同时,JessMA为应用开发提供了大量Util工具,用来处理应用程序开发过程中通常会遇到的一般性问题,进一步减少应用程序开发者的工作负担。 6) 平缓的学习曲线:学习使用JessMA只需掌握一定的Core Java与JSP/Servlet...

    daijie:提供基于spring-cloud系列整合的依赖jar包,再加入了分布式锁,分布式事务,接口文档,多数据源,单点登录,第三方集成等等可spring-boot配置的,简单化的使用工具

    项目是由我个人开发,主要解决工作项目中可能会遇到的各种问题,在第三方框架集成的基础上拓展需求,不实现具体业务。如果您在微服务中遇到了一些问题或有疑问,欢迎大家来这里提问或提出您的想法,我会及时给予回复...

    最新基于SSM框架ssm医院远程诊断系统.zip

    基于SSM框架的医院远程诊断系统是一个利用Java语言和集成了Spring、SpringMVC、MyBatis(SSM)框架开发的应用程序,旨在为医疗机构提供一个在线远程诊断和患者管理的平台。 该系统的主要功能可能包括: 1. **用户...

    iuhyiuhkjh908u0980

    JBPM与Spring的集成开发(包括可 ... 入门级的东西. JBPM文档1、 加入JBPM支持包下载jbpm-starters-kit-3.1.4在项目的classPath中加入jbpm-3.1.4.jar、jbpm-identity-3.1.2.jar、jbpm-webapp-3.1.2.jar,jbpm-3.1.4....

    asp.net知识库

    帮助解决网页和JS文件中的中文编码问题的小工具 慎用const关键字 装箱,拆箱以及反射 动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个...

    java开源包1

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包11

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包2

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包3

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

Global site tag (gtag.js) - Google Analytics