작성
·
236
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
sql 오류는 order가 예약어였다는 것을 찾아 해결했습니다!
하지만 아직도 main함수에서 돌리면 빈을 찾지 못했습니다 왜 그런가 하여 그냥 컨트롤러를 구현해 만들어 봤습니다.
안됬던이유가 혹시 메인함수에서 실행을 할 경우 @SpringBootApplication에너테이션이 작동을 안해서 그런가요?
그리고 memberRepository에서 선언한 기능들(void save, optional<member>findById)를 아래 사진의 MemberRepositoryJPA에서 오버라이드해서 구현할 경우 JPA에 있는 같은 이름의 함수와 충돌이 일어났습니다. 일단은 Configuration에서 MemberRepositoryJPA함수를 주입받아 필요한 Service구현체에도 넣어 주었습니다.
하지만 이러면 Service구현체에서 MemberRepositoryJPA 타입의 객체에 받아야 해서 DIP에 위반되는 것 같습니다.
MemberRepository에 선언한 기능들이 jpa와memberRepository를 extends한 구현체에서
PA에 있는 같은 이름의 함수와 충돌이 일어나지 않고 잘 쓸 수 있는지 궁금합니다.
0
안녕하세요. 이승언님
전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.
주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요
추가로 다음 내용도 코멘트 부탁드립니다.
1. 실행 방법을 알려주세요.
2. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요.
감사합니다.