스프링부트

[스피링부트 입문 김영한] javax 및 autowire 에러 발생

jinaenya 2024. 11. 20. 00:31

 

JDBC 회원 Repository 코드를 작성했을 때 에러가 발생함

--> spring boot 3에는 Jakarta EE 9이 포함됨에 따라 javax 관련 패키지명이 javax에서 jakarta로 변경되었음. 이에 강의에 기재된 javax가 아니라 jakarta로 기재하여 수정

(참고 : https://www.inflearn.com/questions/822610/javax-persistence가-import되지-않습니다)

//import javax.sql.DataSource;
import jakarta.sql.DataSource;
 

해결 완료!


Could not autowire. No beans of 'MemberRepository' type found.

 

  • @Autowired : 생성자에 해당 구문이 붙어 있으면, 스프링이 연관된 객체를 스프링 컨테이너에서 알아서 찾아서 넣어줌.
    • 이렇게 객체 의존관계를 외부에서 넣어주는 게 DI(Dependency Injection), 의존성 주입

 

회원서비스 스프링 통합 테스트에서 에러 발생

--> 스프링컨테이너가 관리하는 객체만 주입해주는 거니까, MemberRepository 상단에 @Repository 표기를 잊은 건 아닌지 확인하기.

 

(참고 : https://www.inflearn.com/community/questions/822610/javax-persistence%EA%B0%80-import%EB%90%98%EC%A7%80-%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4)

package hello.hellospring.repository;

import hello.hellospring.domain.Member;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

@Repository
public interface MemberRepository {
    Member save(Member member);//회원 저장 후 저장된 회원 반환
    Optional<Member> findById(Long id);//null 반환 대신 Optional로 처리하는 게 트렌드
    Optional<Member> findByName(String name);
    List<Member> findAll();
}
 

수정 후 해결 완료!