티스토리 뷰
프로그래밍/Java
[오류해결] java.lang.NullPointerException: Cannot invoke "service..." because "this.service" is null 에러
돔돔이 2024. 1. 10. 11:33728x90
반응형
아래와 같은 식으로, OncePerRequestFilter를 사용(extends)하여 특정 서비스를 @Autowired로 주입받으려고하니,
NullPointerException이 발생하며 에러가 났습니다.
public class .. extends OncePerRequestFilter{
@Autowired
private Service service;
@Override
protected void doFilterInternal{
...
}
}
이는 Spring의 빈(Bean) 주입 순서와 관련된 문제입니다.
' OncePerRequestFilter'는 서블릿 필터이며, String에서 관리하는 다른 빈들과는 다른 생명주기를 가지고 있습니다.
이로 인해 서비스가 올바르게 주입되지 않은 것 같습니다.
직접 ApplicationContext를 통해 서비스 빈을 가져오도록 수정하면 됩니다.
@Override
protected void doFilterInternal(
HttpServletRequest request,
HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext());
Service service = ctx.getBean(Service.class);
// 이제 Service를 사용할 수 있습니다.
}
@Autowired를 사용하여 서비스를 주입받는 부분은 삭제해줍니다.
// 아래 부분은 삭제
@Autowired
private Service service;
이렇게 수정하고 재실행해보면 정상적으로 실행되는 것을 확인할 수 있습니다.
728x90
반응형
'프로그래밍 > Java' 카테고리의 다른 글
[SpringBoot + JPA] tutorial: 스프링 부트 쇼핑몰 프로젝트 with JPA -1. 애플리케이션 생성 및 설정하기 (2) | 2024.07.03 |
---|---|
[intellij] java spring project 실행시 JCTree qualid 관련 오류 해결 (3) | 2024.04.11 |
[springboot] 토큰을 이용한 사용자인증 및 로그아웃 구현하기 (spring security 이용) (36) | 2023.12.22 |
[spring boot] Java EE에서 Jakarta EE로의 전환 (48) | 2023.12.06 |
[spring boot] WAS를 JBoss(wildfly) 사용한 개발환경 만들기-2 (43) | 2023.12.05 |
댓글