java - Sonar : Instance methods should not write to "static" fields

标签 java spring static sonarqube

我从 Sonar 收到此提示:实例方法不应写入“静态”字段

我不太确定需要更改什么来解决此问题。

“SemaMonitorProxy.applicationContext”是否必须等于静态方法?

public class SemaMonitorProxy implements ApplicationContextAware {

    private static ApplicationContext applicationContext = null;

    public void registerFailedLoginAttempt(HttpServletRequest request, HttpServletResponse response) {
        final SemaMonitor semaMonitor = applicationContext.getBean(SemaMonitor.class);
        semaMonitor.registerFailedLoginAttempt(request, response);
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SemaMonitorProxy.applicationContext = applicationContext;
    }
}

最佳答案

其实这个方法:

@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    SemaMonitorProxy.applicationContext = applicationContext;
}

是写入静态字段的实例方法:

private static ApplicationContext applicationContext

您不能将上述方法设为静态。因此,唯一的解决方案是从 applicationContext 声明中删除 static 关键字。

private ApplicationContext applicationContext

关于java - Sonar : Instance methods should not write to "static" fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47529300/

相关文章:

C++私有(private)构造类

javascript - java Date对象总是少一天

java - 单元测试中的请求范围 bean 管理

java - 未找到当前线程 : Spring 3 and Hibernate 4 (Using @PostConstruct annotation) 的 session

java - 为什么 Spring 中没有 DI 缓存就无法工作?

C++——静态变量

java - 如何计算处理时间?

java - Gradle 从 lib 中排除 java 类,替换为自己的类以避免重复

java - 处理与 JNI 的关联

java - 编写 Util 类的最佳方式