我正在开发Spring mvc应用程序。
我有一个控制器,我正在注入超过10个服务。
我从这个控制器中暴露了10多个url,而且我在每种方法中都使用one or two service
个对象。
我在考虑两种方法。
请告诉我哪种方法更好或两种方法在内存使用和时间方面相同
由于
答案 0 :(得分:8)
在大多数情况下,最好的方法是将控制器分解为多个控制器。 拥有太多依赖项的行为是Code Smell,因为您的控制器很可能违反了Single Responsibility Principle。
对于许多依赖项使用@Autowired
和使用ApplicationContext动态检索依赖项都是大多数情况下的平庸解决方案,应尽可能避免使用。你应该做的是分解控制器然后使用@Autowired
(最好是构造函数而不是字段注入 - 查看this以获取更多细节)以使Spring注入依赖项。
在您描述的情况下,您不应该担心您提出的解决方案的性能或内存消耗,而是代码的可维护性。
虽然从ApplicationContext动态查找依赖项会慢一些访问容器依赖项所注入的依赖项,但在几乎所有情况下,我们都无法区分它们。正如我上面提到的,你必须关注的第一个问题是代码可维护性,而不是微观性能/内存问题。