这是previous question的后续问题。
根据我的理解,一个带有@Controller
注释类的@RequestMapping
- 带注释的方法无法成功继承另一个,因为Spring无法识别它们都映射到相同的方法。即使Spring认识到它们是同一个实例,它也无法决定使用两个控制器bean的哪个实例来调用该方法。
但静态方法是独立于类的任何实例而调用的,并且子类不携带父级静态成员的副本。制作我的所有@RequestMapping
- 带注释的方法static
(至少在父类上)可以解决这个问题,这就引出了我的问题:
public static
方法可以与类@Controller
和方法@RequestMapping
一起使用吗?它的行为与非静态方法大致相同*?
*我知道static
方法自然无法访问实例成员,但控制器通常应该以这样的方式实现,即无论如何都没有任何实例变量。如果它们是静态方法,我正在处理的所有方法都将完全相同,只要框架允许它。
答案 0 :(得分:1)
在Spring 3.2.X中它适用于我。虽然,控制器通常在其实例上有数据成员,但它们通常是作为服务的自动装配实例。所以我想知道你是否误解了Spring框架的整体设计模式。
我无法想到使用静态方法的任何实际好处,控制器实例已经存在,所以即使你让控制器拥有所有静态方法,它仍然会被实例化。我认为实例调用开销是微不足道的,并且在性能方面会在噪声中丢失。