인프런 커뮤니티 질문&답변

이승언님의 프로필 이미지

작성한 질문수

스프링 핵심 원리 - 기본편

Appconfig, DI질문입니다.

22.09.30 04:13 작성

·

227

0


=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]

SpringConfig(설정파일입니다)

이 Repository를 DI하려고 합니다. (H2에 데이터베이스와 연결된 상태입니다.)

실행하는 main소스입니다


public static void main실행시 다음과 같은 오류가 뜹니다

 

Error creating bean with name 'springConfig': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.example.demo.repository.MemberRepositoryIMPlM1' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
1. JPArepository를 extends한 MemberRepositoryIMPLM1이 SpringConfig의 생성자에 있는 파라미터에 Autowired로 등록될 줄 알았으나 전혀 등록되지않아 질문드립니다.

 

 

 

 

application.properties파일입니다

h2 데이터베이스를 실행할때마다 초기화 하기 위해 ddl-auto를 create로 해두었습니다.

 

2022-09-30 04:05:45.115 WARN 25416 --- [ restartedMain] o.h.t.s.i.ExceptionHandlerLoggedImpl : GenerationTarget encountered exception accepting command : Error executing DDL "drop table if exists order CASCADE " via JDBC Statement

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "drop table if exists order CASCADE " via JDBC Statement

 

Order table입니다

 

아래의 그림과 같이Member 테이블은 생성되어 있지만 Order table이 생성되지 않아 위에 와 같은 오류가 발생해 질문드립니다 ㅠㅠ

 

 

 

답변 2

1

이승언님의 프로필 이미지
이승언
질문자

2022. 10. 01. 01:58

sql 오류는 order가 예약어였다는 것을 찾아 해결했습니다!

하지만 아직도 main함수에서 돌리면 빈을 찾지 못했습니다 왜 그런가 하여 그냥 컨트롤러를 구현해 만들어 봤습니다.

imageimageimage안됬던이유가 혹시 메인함수에서 실행을 할 경우 @SpringBootApplication에너테이션이 작동을 안해서 그런가요?

 

그리고 memberRepository에서 선언한 기능들(void save, optional<member>findById)를 아래 사진의 MemberRepositoryJPA에서 오버라이드해서 구현할 경우 JPA에 있는 같은 이름의 함수와 충돌이 일어났습니다. 일단은 Configuration에서 MemberRepositoryJPA함수를 주입받아 필요한 Service구현체에도 넣어 주었습니다.

하지만 이러면 Service구현체에서 MemberRepositoryJPA 타입의 객체에 받아야 해서 DIP에 위반되는 것 같습니다.

MemberRepository에 선언한 기능들이 jpa와memberRepository를 extends한 구현체에서

PA에 있는 같은 이름의 함수와 충돌이 일어나지 않고 잘 쓸 수 있는지 궁금합니다.

image

0

김영한님의 프로필 이미지
김영한
지식공유자

2022. 10. 03. 15:23

안녕하세요. 이승언님

전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx

주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요

추가로 다음 내용도 코멘트 부탁드립니다.

1. 실행 방법을 알려주세요.

2. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요.

감사합니다.