복붙노트

[SPRING] 소나 : 인스턴스 메소드는 "정적"필드에 쓰지 않아야합니다.

SPRING

소나 : 인스턴스 메소드는 "정적"필드에 쓰지 않아야합니다.

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

해결법

  1. ==============================

    1.실제로이 방법은 다음과 같습니다.

    실제로이 방법은 다음과 같습니다.

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

    정적 필드에 쓰는 인스턴스 메소드입니다.

    private static ApplicationContext applicationContext
    

    위의 메소드를 정적으로 만들 수 없습니다. 따라서 유일한 해결책은 applicationContext 선언에서 정적 키워드를 제거하는 것입니다.

    private ApplicationContext applicationContext
    
  2. from https://stackoverflow.com/questions/47529300/sonar-instance-methods-should-not-write-to-static-fields by cc-by-sa and MIT license