![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fenw39V%2FbtsFvZ746SI%2FF5EgZNxkWKXoR9wvD9AnD1%2Fimg.png)
Spring에서 Static 선언으로 인해 Singleton 패턴을 보장 받지 못하는 경우
·
Dev/Trouble Shooting
요약 Spring Container에 등록된 Bean에 대한 인스턴스가 실제로 Singleton 패턴이 적용되어 있는지 확인해 보려고 테스트 코드를 작성하였다. 근데, 이상하게도 객체 참조 값이 모두 달라 검증이 되지 않았다. 알고보니 테스트하고 있던 AppConfig에서 해당 Bean을 등록할 때 static으로 선언해서 발생한 문제였다. 해결 해결 방법은 Bean 등록 메서드를 static 하게 선언하지 않으면 된다. 근데 왜 static 하게 Bean 등록 메서드를 사용하면 객체가 Singleton 패턴을 보장받지 못하는걸까? 이유는 다음과 같다. Spring은 내부적으로 @Bean이 붙은 메서드를 호출하면 Singleton Container에 동일한 Bean이 존재하는지 Proxy를 통해 확인한다..