[개발 일기] 2025.06.07 - 수동으로 만든 객체는 DI을 하지 않아요!

2025. 6. 7. 13:06·개발 일기

💡 개요

 

수동으로 만든 객체는 DI가 되지 않는다.

 

 

오늘 처음 알았다. 반성하자.

 

 

 

🛠️ 수동으로 만든 객체

 

내가 이 사실을 알게 된 것은 SecurityConfig에 JwtFilter을 적용할 때 알게 되었다.

 

@Component
public class JwtFilter extends OncePerRequestFilter {

    @Autowired
    private JwtResolver jwtResolver;
    
    @Autowired
    private JwtProvider jwtProvider;
    
    @Autowired
    private UserDetailsService userDetailsService;

    ...
    
}

 

 

보다시피 JwtFilter에서 사용되는 의존성이 주입된 객체를 사용할 때 DI가 주입되지 않는 에러가 발생한다.

 

 

여기서 든 나의 생각은 ‘@Component 를 붙였으니 Spring이 관리하는 빈은 맞는데, 왜 의존성 주입이 안되는거지??’ 였다.

 

 

이와 관련된 내용을 찾아보니까 JwtFilter는 아마도 Spring Security 필터 체인에서 직접 등록한 new JwtFilter() 식의 객체이기 때문이라는 것이다.

 

 

이런 식으로 수동으로 생성한 객체(new Filter())는 스프링 컨테이너가 관리하지 않기 때문에 자동으로 DI를 하지 않는다.

 

 

그렇기 때문에 아래와 같이 직접 넣어줘야 한다.

 

@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class SecurityConfig {

    private final JwtResolver jwtResolver;
    private final JwtProvider jwtProvider;
    private final UserDetailsService userDetailsService;
    
    ...

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
                ...
                .addFilterBefore(new JwtFilter(jwtResolver, jwtProvider, userDetailsService), UsernamePasswordAuthenticationFilter.class) ;
                
         ...
    }
}

 

@Component
@RequiredArgsConstructor
public class JwtFilter extends OncePerRequestFilter {

    private final JwtResolver jwtResolver;
    private final JwtProvider jwtProvider;
    private final UserDetailsService userDetailsService;
    
    ...
}

'개발 일기' 카테고리의 다른 글

[개발 일기] 2025.06.09 - 격리 수준  (0) 2025.06.09
[개발 일기] 2025.06.08 - 갑자기 ID가 커진다  (0) 2025.06.08
[개발 일기] 2025.06.06 - FilterChainProxy  (0) 2025.06.06
[개발 일기] 2025.06.05 - 새로운 패키지 구조  (0) 2025.06.05
[개발 일기] 2025.06.04 - H2는 Point 타입을 사용할 수 없다!!  (1) 2025.06.04
'개발 일기' 카테고리의 다른 글
  • [개발 일기] 2025.06.09 - 격리 수준
  • [개발 일기] 2025.06.08 - 갑자기 ID가 커진다
  • [개발 일기] 2025.06.06 - FilterChainProxy
  • [개발 일기] 2025.06.05 - 새로운 패키지 구조
오도형석
오도형석
  • 오도형석
    형석이의 성장일기
    오도형석
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • MSA 모니터링 서비스
        • DB
      • 스파르타 코딩클럽
        • SQL
        • Spring
      • 백엔드
        • Internet
        • Java
        • DB
      • 캡스톤
        • Django
        • 자연어처리
      • Spring
        • JPA
        • MSA
      • ETC
        • ERROR
      • 개발 일기 N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
오도형석
[개발 일기] 2025.06.07 - 수동으로 만든 객체는 DI을 하지 않아요!
상단으로

티스토리툴바