작성
·
307
0
2024-05-16T23:53:30.318+09:00 ERROR 11428 --- [library-app] [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in com.group.libraryapp.service.book.BookService required a bean of type 'com.group.libraryapp.domain.book.BookRepository' that could not be found.
Action:
Consider defining a bean of type 'com.group.libraryapp.domain.book.BookRepository' in your configuration.
Process finished with exit code 0
이런 오류가 뜨는데 bean 설정도 강의 내용그대로 한거 같은데 계속 코드를 수정하려고 해도 Error 가 떠서 해결방법을 모르겠습니다
package com.group.libraryapp.service.book;
import com.group.libraryapp.domain.book.Book;
import com.group.libraryapp.domain.book.BookRepository;
import com.group.libraryapp.domain.user.User;
import com.group.libraryapp.domain.user.UserRepository;
import com.group.libraryapp.domain.user.loanhistory.UserLoanHistory;
import com.group.libraryapp.domain.user.loanhistory.UserLoanHistoryRepository;
import com.group.libraryapp.dto.Book.request.BookCreateRequest;
import com.group.libraryapp.dto.Book.request.BookLoanRequest;
import com.group.libraryapp.dto.Book.request.BookReturnRequest;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class BookService {
private final BookRepository bookRepository;
private final UserLoanHistoryRepository userLoanHistoryRepository;
private final UserRepository userRepository;
public BookService(
BookRepository bookRepository,
UserLoanHistoryRepository userLoanHistoryRepository,
UserRepository userRepository) {
this.bookRepository = bookRepository;
this.userLoanHistoryRepository = userLoanHistoryRepository;
this.userRepository = userRepository;
}
@Transactional
public void saveBook(BookCreateRequest request){
bookRepository.save(new Book(request.getName()));
}
@Transactional
public void loanBook(BookLoanRequest request){
Book book = bookRepository.findByName(request.getBookName())
.orElseThrow(IllegalArgumentException::new);
if(userLoanHistoryRepository.existsByBookNameAndIsReturn
(book.getName(),false)){
throw new IllegalArgumentException("이미 대출되어 있는 책 입니다");
}
User user = userRepository.findByName(request.getUsername())
.orElseThrow(IllegalArgumentException::new);
userLoanHistoryRepository.save(new UserLoanHistory(user, book.getName()));
}
@Transactional
public void returnBook(BookReturnRequest request){
User user= userRepository.findByName(request.getUserName())
.orElseThrow(IllegalArgumentException::new);
UserLoanHistory history = userLoanHistoryRepository.findByUserIdAndBookName(user.getId(), request.getBookName())
.orElseThrow(IllegalArgumentException::new);
history.doReturn();
}
}
package com.group.libraryapp.domain.book;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface BookRepository extends JpaRepository<Book,Long> {
Optional<Book> findByName(String bookName);
}
답변 1
0
안녕하세요 동찬님! 질문 올려주셔서 감사드립니다. 🙂
우선 에러를 해석해보면, com.group.libraryapp.domain.book.BookRepository
를 찾을 수 없어서, BookService
를 만들 수 없다고 하는데, 사실은 정상적으로 잘 있는 것을 확인할 수 있어요..!!
BookRepository
인터페이스도 잘 만들어주셨구요!
이런 경우는, 혹시 코드를 실행시킬 때, 이전에 컴파일 되었던 정보가 남아 있어 변경되기 전 코드로 실행되고 있는 것은 아닌지 확인해보면 좋습니다.
오른쪽 gradle 탭에서 clean을 더블클릭 한 이후, 다시 한 번 실행해보시면 좋을 것 같습니다!!
꼭 해결되셨으면 좋겠습니다. 감사합니다! 🙏