如果有什么问题请指正.
据我了解,所有Spring功能,即DI都在通过bean时起作用
Spring Context,即getBean()方法.
否则,即使我的方法标记为@Transactional,也没有任何效果,我将
使用新的运算符创建拥有类,将不会提供任何交易管理.
我将Tomcat 6用作servlet容器.
所以,我的问题是:如何使Spring框架管理Servlet方法.
这里的问题是我使用了一个框架,它的servlet扩展了
基本的Java Servlet,因此它们具有更多方法.尽管如此,web.xml仍然像往常一样存在于应用程序中.
事实是,我不控制servlet的创建流程,只能覆盖一些方法
每个servlet的流程基本上都记录在一些xml文件中,但是我控制了这个过程
使用图形用户界面.
因此,基本上,我只向每个Servlet的一些方法添加一些代码.
如何使这些方法由Spring框架管理?我需要做的基本事情是
使这些方法具有事务性(@Transactional).
对博佐的评论:
@Bozho让我们看看.在这些servlet的方法中,我使用框架功能,比如说在当前会话中获取并保存的特殊变量.所需要的是,遍历这些基于框架的集合,同时将一些值保存在数据库中.您建议引入一个非常复杂的新对象,以便可以将其传递到服务层. (服务层对当前会话中保存的框架,其类和对象一无所知!首先,我们将基于框架的集合“包装”到这样的对象,因此将所有内容复制到其中.然后,服务层方法应该保存更改数据库,或更糟糕的情况是,返回一个新的复杂对象,以便Servlet框架方法可以根据Service层方法执行的结果来更新框架变量,这是一种解决方法,但您认为这是个好主意吗?
解决方法:
您还可以直接在Spring应用程序上下文中定义servlet.您将需要在web.xml中注册的“代理” servlet,并委派给在applicationContext.xml中配置为bean的servlet实例.代理servlet配置有目标servlet bean的名称,它通过WebApplicationContextUtils.getRequiredWebApplicationContext().getBean(…)发现该bean,并将所有处理委托给目标servlet.在这种情况下,您的servlet实例完全由Spring管理.