IT 성장일기
[Spring] Annotation의 중요성을 느끼다 본문
Annotation의 중요성을 느끼다
회사에서 서비스하는 어플리케이션의 유지보수나 서비스 확장성 면에서 유리한 조건을 만들기 위해
사수님과 함께 코드 리팩토링을 진행하기로 했습니다.
컨트롤러 부분에서 코드 리팩토링을 진행하다가 애너테이션은 그냥 있는 것이 아니라는 것을 느끼게 됐습니다.
NullPointException 발생
코드가 많이 중복되는 클래스나 메서드가 여러개씩 존재하는 경우가 있었습니다.
문제가 발생한 클래스에 메서드 두개가 존재했습니다.
각각 별개의 클래스를 호출하는데 클래스를 호출하는 한줄의 코드 외엔 기타 모든 코드가 동일했습니다.
중복코드를 통합하고 서비스 로직만 분기시킨 후 테스트하고 콘솔의 로그를 확인했는데 NullPointException이 발생했습니다.
처음엔 정보를 가져오는 VO 쪽이 이상이 있는건가 해서 VO에 담긴 값들도 면밀히 확인해보았지만 원인이 아니었고,
찬찬히 로그를 읽어보던 중 Annotation이라는 단어들이 눈에 띄었습니다.
다시 코드를 살펴보고서야 수정한 코드를 살펴보고서야 해당 서비스를 필드에 선언하는 과정에서 @Autowired라는 애너테이션을 붙이지 않은 것을 발견했습니다.
분명 컨트롤러 메서드가 A와 B로 나누어져 있을 때는 애너테이션을 붙이지 않아도 문제가 없었는데...
원인이 뭘까 구글링을 해봤는데 읽어봐도 아직은 잘 모르겠습니다. 누군가 이유를 아신다면 설명 부탁드립니다!!.
결국 이건가? 이건가? 싶은 느낌적인 느낌으로 애너테이션을 붙였고 서비스가 아무런 문제 없이 구동됐습니다.
조금씩 작은 개선과 작은 경험을 쌓아가다 보면 이게 모두 내 자산이 되지 않을까?라는 생각이듭니다.
도움이 되어드렸다면 구독 / 좋아요 부탁드립니다.👏🏻
감사합니다.🙂
*참고 :https://devlog-wjdrbs96.tistory.com/166
[Spring] @Autowired란 무엇인가?
저번 글에서 IoC 컨테이너와 빈(Bean)등록에 대해서 정리해보았다. 다시 정리하자면 의존성 주입과 빈 등록은 다른 것인데 일단 IoC 컨테이너에 빈으로 등록이 되어야 의존성 주입을 할 수 있다. 저
devlog-wjdrbs96.tistory.com
'Web > Spring' 카테고리의 다른 글
[Spring] Spring Tool Suite4 설치하기 (0) | 2023.09.08 |
---|---|
[Spring] BeanCreationException 해결하기 (0) | 2023.09.08 |
[Spring] 외부 JS 파일에서 Spring message 사용하기 (0) | 2023.09.08 |
[Spring] 다국어 지원 버전을 만들다가 만난 상황들 -2- (2) | 2023.09.08 |
[Spring] 다국어 지원 기능을 만들다가 만난 상황들 (0) | 2023.09.08 |