• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

HttpServeletRequest 를 못가져오는 이슈

23.01.14 22:40 작성 조회수 684

0

 

안녕하세요.

강의중 AuditorAawareImpl.java 에서

아래와 같이 의존성 주입하니

@Autowired

private HttpServeltRequest httpServletRequest;

-->

"Autowired members must be defined in valid Spring bean.. " 이라고 에러가 납니다.

Spring boot 2.7.7 버전인데요..

어떻게 해야할지 문의드립니다..

답변 3

·

답변을 작성해보세요.

0

qnfudk님의 프로필

qnfudk

2023.04.20

저도 이런데..

안녕하세요

JpaConfig에서 AuditorAwareImpl를 수동으로 빈으로 등록해주고 있는데, @Autowired어노테이션으로 빈을 주입하고 있어서 빈이 아닌데 빈을 주입하고있는걸로 인텔리제이에서 체크해주는걸로 보입니다. 인텔리제이 옵션마다 뜨는 사람이 있고 안뜨는 사람이 있는걸로 생각되네요 아래 코드처럼 생성자 주입으로 빈을 주입하면 아마 에러가 안뜰것입니다.

@RequiredArgsConstructor
public class AuditorAwareImpl implements AuditorAware<String> {

    private final HttpServletRequest httpServletRequest;

    @Override
    public Optional<String> getCurrentAuditor() {
        String modifiedBy = httpServletRequest.getRequestURI();
        if(!StringUtils.hasText(modifiedBy)) {
            modifiedBy = "unknown";
        }
        return Optional.of(modifiedBy);
    }

}
@Configuration
@RequiredArgsConstructor
@EnableJpaAuditing
public class JpaConfig {

    private final HttpServletRequest httpServletRequest;

    @Bean
    public AuditorAware<String> auditorAware() {
        return new AuditorAwareImpl(httpServletRequest);
    }

}
qnfudk님의 프로필

qnfudk

2023.04.23

당일날 바로 댓글주셨네요.. 계속 디버깅하면서 다른부분 오탈자도 찾고.. 이거저거 고치고 결국 이부분도 수정하러 왔습니다.
수정해주신 코드로하니 잘 동작합니다
피드백 감사합니다

넵 ㅎㅎ 남은 챕터도 화이팅입니다!

0

Minkyu Ha님의 프로필

Minkyu Ha

질문자

2023.01.14

빠른 응답 감사합니다.

https://github.com/Minkyuman/spring-boot-template

에 올렸습니다.

해당 빨간줄은 에러가 아니고 Problems에 나옵니다. 해당강의까지는 실행에는 문제없는듯 합니다.

올려주신 소스코드 기준으로 로컬에서 실행해보고있는데, 저는 딱히 오류가 안보여서 확인이 좀 힘드네요 ㅠ AuditorAwareImpl도 빈으로 등록이 되어있기 때문에 스프링에서 httpServletRequest을 각 요청마다 빈으로 주입을 해주기 때문에 소스상으로는 크게 문제는 없습니다!

image

 

0

안녕하세요 JpaConfig도 아래와같이 작성하셨는지 한번 확인해보셔야할꺼 같습니다.

그리고 다르게 작성한 부분이 없다면 깃허브 url로 전달주시면 확인해보도록 하겠습니다.

@Configuration
@EnableJpaAuditing
public class JpaConfig {

    @Bean
    public AuditorAware<String> auditorAware() {
        return new AuditorAwareImpl();
    }

}