我有一个spring MVC应用程序。应用程序的每个控制器都会自动连接它需要与之交互的@Autowired
组件。 Sonarqube分析检测到存在一些重复:某些控制器可能使用相同的服务,在这种情况下@Autowired
private FooService fooService;
@Autowired
private BarService barService;
注释和相应的字段确实相同。
例如,以下内容将在许多控制器中重复:
AbstractController
这是一个小问题,我不知道是否应该解决这个问题。由于我的所有控制器都继承了@Autowired
,并且所有服务都是单例,所以在受保护的字段中将所有{{1}}元素放在基类中是否有意义?
答案 0 :(得分:1)
如果依赖项已经在子类中,那么您可能有理由这样做,例如:它们在概念上不属于抽象类。如果是这样,请将它们保留在子类中。
遵守DRY原则很重要,但不要对此感到痴迷。复制代码为您提供了灵活性,类依赖性是您需要这种灵活性的典型位置。更不用说代码更简单了这种重复。
静态代码分析有助于提供改进代码的指针,但不应盲目跟踪它们。