Web应用开发中通过注解把路由绑定在方法上是一种反模式吗?
本质上没什么区别。 除了这两种之外,还有可以参考Ruby On Rails的Convention over Configuration,都不用你自己写路由,直接根据类和方法名来做分发。 Spring逐渐延伸出来而且被推广的JavaConfig这一套注解,无非是为了在所有实现还都是Java代码的情况下不做任何框架性的侵入。所以你方法的参数还是Java对象,返回的响应还是Java对象,任何对这上面做的扩展和修改也是针对Java对象,对于具体的实现者,Spring这一层可以考虑成是透明的,只要关注正常的输入、处理、输出逻辑就好:这就应该是一个框架该干的事情。 (这里提一下,Spring的大部分注解都是运行时注解,所以只要该类不是由Spring的类加载器接管并创建对象的话,跟砍掉所有注解的普通Java类是一样的。这就是没有侵入性的原因所在。) 直接声明路由的话可以更自由和灵活的控制路由,比如可能你在执行任何方法的时候就动态绑定一堆handler上去,或者是继续bind一大堆的middleware。但也无非是增加了这么一点好处而已,所有其他的东西还都是要你自己去在handler里面再包一层:Web的逻辑就跟你要处理的东西穿插在一起了。 以上。