jfinal和spring整合问题
@JFinal 你好,想跟你请教个问题:我用jfinal2.2整合spring的时候,由于是老项目用的spring版本比较老,是2.5.6的,spring的xml文件无法被spring解析导致无法获取ApplicationContext,错误如下:org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [applicationContext.xml]; nested exception is org.springframework.beans.FatalBeanException: Class [org.springframework.transaction.config.TxNamespaceHandler] for namespace [http://www.springframework.org/schema/tx] does not implement the [org.springframework.beans.factory.xml.NamespaceHandler] interface
这个spring配置文件肯定没有格式错误的,老项目都用了好多年了,用下面这种方法可以获取到spring的ApplicationContext,就是在web.xml配置一个
<listener>
<listener-class>com.shenhua.common.spring.SpringPlugin</listener-class>
</listener>
然后继承ServletContextListener
public class SpringPlugin implements IPlugin,ServletContextListener { private String[] configurations;如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(20)
在listener里spring解析正常,但是jfinal里解析就报错了,我想把listener里解析出来的context给jfinal,但是不知道怎么做,赋值给一个static变量也会被jfinal给置null
你还是先检查下为什么 spring 解析 xml,这个和 jfinal 无关
这个代码我之前搜到过,试过不行,都报xml解析错误,WebApplicationContextUtils.getWebApplicationContext(JFinal.me().getServletContext())不好使 现在主要问题在于jfinal代码和非jfinal代码无法通信,同一个static变量取到的值不一样
@JFinal 虽然jfinal获取不到这个static变量的值,但是我在jsp页面<%System.out.println( Quanju.cc);%>能获取到,感觉jfinal把所有的类又初始化了一遍,通过jfinal获取到的只能是null,有办法解决吗
看看 这个
https://git.oschina.net/Bitter/spring-jfinal
注意一下 applicationContext.xml 中的 bean 标记中的 schame属性,根据异常判断是版本不对,以下这个是比较高的版本http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
总而言之,你先要确保使用Listener 启动spring后是可以正常工作的,然后才进行下一步:与jfinal的整合
回复
可以保证Listener 启动spring后是可以正常工作的,并且我把context赋值给了一个static变量,但是jfinal读这个变量是null
引用来自“JFinal”的评论
切换class load 方式代码不优雅,用我下面介绍的方式:
关键在于 JFinal.me().getServletContext()这一行代码。
切换class load 方式代码不优雅,用我下面介绍的方式:
关键在于 JFinal.me().getServletContext()这一行代码。
@JFinal 不太会啊,求指点,哪个类,核心代码是有哪些,谢谢!
引用来自“hongflyfly”的评论
@JFinal
请教一个问题,我在
ServletContextListener的contextInitialized方法中给一个静态变量赋值
jfinal的优点官网有啊,整合的目的是为了兼容老项目
我想问下,整合的目的是啥,要集成jfinal的什么优点? 顺便说说jfinal的优点?
老项目都是spring写的,不想动太多代码,就想整合了
求分享整合Spring的好处
WebApplicationContextUtils.getWebApplicationContext(servletContextEvent.getServletContext());获取到的context在jfinal启动完就变成了null,这个IocInterceptor要怎么改造啊
回复
能否做到先确保用老方式加载spring,可以正常工作?在此基础上,改造IocInterceptor,最简单的办法是在老方式启动spring的那个类中用一个static 变量保持住spring的context,然后在IocInterceptor 中引用即可
回复
您这个方法我试过,但是这个变量会在jfinal启动完变成null,不知道为啥
回复
用 static 将这个值存起来就好