안녕하세요 초이스40입니다.
스프링 프레임워크를 이용해서 개발을 진행할 때 아래와 같이 null 오류가 발생할 때가 있습니다.
[2021-11-04 17:22:21.664][ERROR][kr.co.interfaces.module.cj.gisticsService:-1] - response >CJLogistics(RESULT_CD=null, RESULT_DETAIL=Success, DATA=CJLogistics.DATA(CLSFCD=XXXX, SUBCD=0, CLSFADDR=113동 111호, CLLDANNM=수벽, CLLDLM=김**, CLLDLVEMPN=G, RSP=7, P2=null))
[2021-11-04 17:22:21.666][DEBUG][kr.co.web.customer.repository.master.CmOnlineMemberPolicyDao.selectOnlineMemberPolicySeq:159] - ==> Preparing: /*+ kr.co.web.customer.repository.master.CmOnlineMemberPolicyDao.selectOnlineMemberPolicySeq [현재 시행중인 회원의 정책 seq] */ SELECT TOP 1 A.PLCY_SEQ FROM CM_ONLINE_MEMBER_POLICY A with (nolock) WHERE A.PLCY_APPLY_YMD <= GETDATE() ORDER BY A.PLCY_SEQ DESC
[2021-11-04 17:22:21.666][DEBUG][kr.co.web.customer.repository.master.CmOnlineMemberPolicyDao.selectOnlineMemberPolicySeq:159] - ==> Parameters:
스프링을 이용해서 개발한 경우 @Autowired 로 의존성 주입을 하게되는데 Service 클래스의 매소드를 호출할 때 해당 클래스를 new를 이용해서 생성해주게 되면 의존성 주입을 통해서 생성된 클래스를 인식하지 못한다.
그런 경우 위와 같이 해당 클래스/변수 등이 null 오류가 발생하게 된다.
@Autowired를 이용해서 의존성 주입을 한 클래스는 new를 이용해서 참조하면 안되고 일관되게 @Autowired를 이용해서 클래스를 사용해야 한다.
위와 같은 원인이 아닌데 변수의 값이 null인 경우는 해당 클래스의 메소드가 private이고 패키지 경로가 다른 경우도 해당 클래스의 변수를 참고하려할 때 null을 리턴하는 경우가 있을 수 있다.
평소에는 복붙해서 사용하다가 이런 오류가 발생하면 어디가 잘못인지 몰라 몇 시간 헤매는 경우가 발생하는데 차근차근 즐거운 개발 하시기 바랍니다.
그럼 이만.
감사합니다.
'IT 관련' 카테고리의 다른 글
알약 V3 랜섬웨어 대체 무료 백신 추천 (1) | 2022.08.30 |
---|---|
The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path [이클립스 오류] (0) | 2021.11.07 |
[Java] NullPointException 관련 해결 및 예방하기 (0) | 2021.11.04 |
[spring sts] An IProcess could not be created for the launch 오류 해결 (0) | 2021.11.02 |