Sonar: Instance methods should not write to “stati

2020-04-01 10:10发布

问题:

I am getting this prompt from Sonar: Instance methods should not write to "static" fields

I'm not quite sure what I need to change to fix this issue.

Does "SemaMonitorProxy.applicationContext" have to equal a static method?

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;
    }
}

回答1:

In fact this method:

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

is an instance method writing to a static field:

private static ApplicationContext applicationContext

You cannot make the above method static. So the only solution would be to remove the static keyword from the applicationContext declaration.

private ApplicationContext applicationContext