我来自MVC框架的一些经验,最近我开始对Spring感兴趣。我认为这是一个很好的框架,因为我直到现在才看到它。无论如何,在我过去的经历中,我习惯了不同的编程风格,特别是对于控制器的结构。我习惯使用控制器的方式是不同的。当然,我曾经以某种方式映射一个请求给他们(想想结构与各种动作),但那时我真正喜欢的是你可以将动作传递给其他控制器,然后他们将保持“主动”控制器,那些将负责处理下一个请求,可能来自HTTP请求或其他东西。我确实喜欢这个,因为以自动方式保持用户会话的状态非常好,使代码清洁并在不同的控制器中分离不同的情况。现在我已经阅读了Spring Web MVC,而文档只讨论了回答请求的控制器,但它们并没有保持状态,也没有关于链接控制器(除了转发)和状态保留的说法。
你如何在春天处理这些主题,是否有不同的方式,或者我应该实现自己的有状态控制器和状态/动作类?
我希望我的问题足够明确,并为其广泛而道歉。
答案 0 :(得分:8)
在Java中,有状态/无状态Web框架之间的区别通常被描述为基于操作的框架和基于组件的框架之间的区别。
这两种方法都是有效的,但通常在您选择框架时,您仍然坚持使用该框架的方式:
热门动作框架:
热门组件框架:
(两个类别当然还有更多)
答案 1 :(得分:5)
在Spring MVC中,您可以使用无状态控制器转发请求/调用会话范围的bean。
但是,如果这是一个好主意或不强烈取决于您的用例。 - 只有当我只有少数这种“奇怪”的控制器时,我才会这样做。 - 如果你有很多,我认为值得寻找其他解决方案。 (例如JSF with Spring)