今天,我们在代码中发现了这种模式:
class Foo {
private List<String> errors;
public void addError(String error) { ... }
public List<String> getErrors();
}
虽然代码似乎可以工作,但这是一个单例 Spring bean,它被注入到几个独立的地方,并且 bean 的使用者假设他们每个人都有自己的错误列表。所以这引入了一些微妙的错误。
显而易见的解决方案是教育开发人员避免这种错误,但我想知道是否有静态或运行时代码分析工具可以找到这种错误。
例如,bean 后处理器可以在 bean 返回之前对其进行分析,并查找不是@Autowired
.