작성
·
2.8K
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예
[질문 내용]
@Configuration
public class SpringConfig {
private final MemberRepository memberRepository;
@Autowired
public SpringConfig(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
@Bean
public MemberService memberService() {
return new MemberService(memberRepository);
}
// @Bean
// public MemberRepository memberRepository() {
// //return new JdbcTemplateMemberRepository(dataSource);
// return new JPAMemberRepository(em);
// }
}
SpringConfig()
함수의 memberRepository
인자 부분에서 Could not autowire. No beans of 'MemberRepository' type found.
에러가 발생합니다.
그래서 최종적으로 HelloSpringApplication
을 실행시켜보면
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2023-03-17T22:02:24.272+09:00 ERROR 20624 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in hello.hellospring.SpringConfig required a bean of type 'hello.hellospring.repository.MemberRepository' that could not be found.
Action:
Consider defining a bean of type 'hello.hellospring.repository.MemberRepository' in your configuration.
Process finished with exit code 1
에러가 발생합니다.
@Transactional
public class MemberService {
private MemberRepository memberRepository;
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
/*
* 회원 가입
* */
public Long join(Member member) {
// 같은 이름이 있는 중복 회원 X
validateDuplicateMember(member);
memberRepository.save(member);
return member.getId();
}
private void validateDuplicateMember(Member member) { // 중복 회원 검증 함수
memberRepository.findByName(member.getName())
.ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
}
/*
* 전체 회원 조회
* */
public List<Member> findMembers() {
List<Member> all = memberRepository.findAll();
return memberRepository.findAll();
}
/*
* 특정 회원 조회
* */
public Optional<Member> findOne(Long memberId) {
return memberRepository.findById(memberId);
}
}
MemberService
에 있는 애노테이션은 다 제거했는데 왜 오류가 발생하는지 모르겠습니다.
답변 2
0
안녕하세요. dfada dfamkl님, 공식 서포터즈 codesweaver입니다.
전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.
구글 드라이브 업로드 방법 링크
주의: 업로드시 권한 문제 꼭 확인해주세요
감사합니다.
0
안녕하세요, dfada dfamkl 님! 공식 서포터즈 codesweaver 입니다.
@Autowired 는 스프링 컨테이너가 관리하는 객체만 주입받을 수 있습니다.
MemberRepository 를 주입받으려면 그 클래스에 @Repository 를 붙이는 방법을 사용하세요.
감사합니다.
@Repository
를 붙이고 실행을 해봤는데위에 에러가 발생하는데 어떻게 해야 하나요?