jfinal和spring整合问题

发布于 2021-11-30 22:56:36 字数 1766 浏览 847 评论 20

@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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(20

反目相谮 2021-12-02 08:24:52

在listener里spring解析正常,但是jfinal里解析就报错了,我想把listener里解析出来的context给jfinal,但是不知道怎么做,赋值给一个static变量也会被jfinal给置null

情栀口红 2021-12-02 08:24:51

你还是先检查下为什么 spring 解析 xml,这个和 jfinal 无关

惜醉颜 2021-12-02 08:24:48

这个代码我之前搜到过,试过不行,都报xml解析错误,WebApplicationContextUtils.getWebApplicationContext(JFinal.me().getServletContext())不好使 现在主要问题在于jfinal代码和非jfinal代码无法通信,同一个static变量取到的值不一样

回忆凄美了谁 2021-12-02 08:24:47

@JFinal 虽然jfinal获取不到这个static变量的值,但是我在jsp页面<%System.out.println( Quanju.cc);%>能获取到,感觉jfinal把所有的类又初始化了一遍,通过jfinal获取到的只能是null,有办法解决吗

做个少女永远怀春 2021-12-02 08:24:47

看看 这个

https://git.oschina.net/Bitter/spring-jfinal

掩饰不了的爱 2021-12-02 08:24:45

注意一下 applicationContext.xml 中的 bean 标记中的 schame属性,根据异常判断是版本不对,以下这个是比较高的版本http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

南汐寒笙箫 2021-12-02 08:24:44

总而言之,你先要确保使用Listener 启动spring后是可以正常工作的,然后才进行下一步:与jfinal的整合

好听的两个字的网名 2021-12-02 08:24:39

回复
可以保证Listener 启动spring后是可以正常工作的,并且我把context赋值给了一个static变量,但是jfinal读这个变量是null

兮颜 2021-12-02 08:24:34

引用来自“JFinal”的评论

  切换class load 方式代码不优雅,用我下面介绍的方式:

public class MySpringPlugin implements IPlugin {
 public boolean start() {
   IocInterceptor.ctx =   WebApplicationContextUtils.getWebApplicationContext(JFinal.me().getServletContext());
  return true;
 }

 public boolean stop() {
  return true;
}

   关键在于 JFinal.me().getServletContext()这一行代码。

凯凯我们等你回来 2021-12-02 08:24:31

  切换class load 方式代码不优雅,用我下面介绍的方式:

public class MySpringPlugin implements IPlugin {
 public boolean start() {
   IocInterceptor.ctx =   WebApplicationContextUtils.getWebApplicationContext(JFinal.me().getServletContext());
  return true;
 }

 public boolean stop() {
  return true;
}

   关键在于 JFinal.me().getServletContext()这一行代码。

命硬 2021-12-02 08:24:27

@JFinal 不太会啊,求指点,哪个类,核心代码是有哪些,谢谢!

晚风撩人 2021-12-02 08:24:24

引用来自“hongflyfly”的评论


@JFinal
 

请教一个问题,我在
ServletContextListener的contextInitialized方法中给一个静态变量赋值

泪冰清 2021-12-02 08:24:23

jfinal的优点官网有啊,整合的目的是为了兼容老项目

累赘 2021-12-02 08:10:45

我想问下,整合的目的是啥,要集成jfinal的什么优点? 顺便说说jfinal的优点?

一笔一画续写前缘 2021-12-02 08:05:20

老项目都是spring写的,不想动太多代码,就想整合了

拥有 2021-12-02 07:59:55

求分享整合Spring的好处

夜血缘 2021-12-02 07:23:04

WebApplicationContextUtils.getWebApplicationContext(servletContextEvent.getServletContext());获取到的context在jfinal启动完就变成了null,这个IocInterceptor要怎么改造啊

顾挽 2021-12-02 05:35:07

回复
能否做到先确保用老方式加载spring,可以正常工作?在此基础上,改造IocInterceptor,最简单的办法是在老方式启动spring的那个类中用一个static 变量保持住spring的context,然后在IocInterceptor 中引用即可

月亮是我掰弯的 2021-12-02 03:29:30

回复
您这个方法我试过,但是这个变量会在jfinal启动完变成null,不知道为啥

恋你朝朝暮暮 2021-12-01 18:22:08

回复
用 static 将这个值存起来就好

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文