Leta Learns

함밥 | 220825 본문

토이 프로젝트/함밥

함밥 | 220825

leta 2022. 8. 25. 20:03

#그룹 수정 기능

 

required a bean of type 'hambap.demo.service.GroupService' that could not be found. 오류남.

Bean 설정 안 해줘서 발생한 오류이다.

Service단에서 @Service annotation 지정해주면 된다.

https://velog.io/@hiworld/Spring-...-required-a-bean-of-type-...-%EC%98%A4%EB%A5%98

 

[Spring] ... required a bean of type ... 오류

😵 오류 메시지 🤔 오류 원인 오류 메시지를 보면, BoardService의 생성자 첫 번째 parameter에 필요한 BoardRepository bean을 주입받아야 하는데 BoardRepository가 bean으로 등록되어 있지 않아 발생하는 오류

velog.io

 

 

 

JPArepository에 있는 save()의 반환자료형 매치를 잘못해서 에러가 났었다.

처음에는 수정할 때 updateGroup() 함수를 만들었었는데 그냥 repository에서는 save()로 하고 service 쪽에서부터는 updateGroup()으로 하기로 했다.

 

save() 함수는 반환자료형이 optional이 아닌데 내가 optional로 반환하도록 해놨어서 에러가 났다.

optional 지웠더니 빌드 성공.

 

 

 

 

/group/update/2/apc 로 수정을 해보려고 했는데

 

이런 에러가 뜸..

 

 

 

 

 

 

 

updateGroup 함수를 save로 바꾸고 나서 DAO의 파라미터를 안 바꿨길래 바꿔주었다.

 

...그래도 에러는 해결하지 못했다.

에러 메시지를 읽어보니 serviceImpl에서 이름 등의 값들을 임의로 그냥 "" 이렇게 빈문자열로 해놓았던 게 문제가 된 것 같아서

 

 

대충 이렇게 바꿔주었다.

 

 

 

 

 

 

 

 

 

그랬더니 다른 에러가 뜬다.

 

leader값이 not null 이어야 하는데 안 넣어줘서 그런 것 같다.

 

 

findGroupById 함수를 사용해서 그룹을 받아오고 그 안에 있는 leader 값을 가져와서 넣어주기로 했다.

 

 

이렇게 해주었고,

 

 

 

 

 

 

 

 

 

 

 

이런 에러가 떴다.

 

id 설정을 안 해줘서 그런건가?

 

//에러메시지
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: The given id must not be null!; nested exception is java.lang.IllegalArgumentException: The given id must not be null!] with root cause

 

 

 

 

 

 

id 정보도 받아와서 새로 지정해주었다.

(39, 43번 줄)

ㅡㅡ 아 저 에러메시지 보기 싫다.

 

 

해결!

 

service단 문제가 아니라 controller가 문제였다. 

24번 줄에서 @PathVariable을 name과 id 각각 해주어야 하는데, 한 번만 하면 되는 줄 알았다.

ㅋㅋ.. @PathVariable은 파라미터별로 각각 설정해주어야 함!

 

service 단에서 id  받아온 건 필요 없는거였어서 그냥 삭제해주었다.

 

수정 기능 완성!

 

 

 

#그룹 삭제 기능

DAO와 Service 단 사이에서 자꾸 Optional과 optional이 아닌 객체가 혼동되었다.

하나를 optional이 아닌 것으로 고치면 하나가 optional이어야 한다고 하고,,, 전체 다 optional 아닌 걸로 하면 어떤 거는 optional이어야 한다고 뜨고... (Optional의 루프.....)

 

이것저것 찾아보면서 하느라 정확한 에러를 기록하진 못했지만, 암튼 이런 에러가 떴었다..

 

Dao와 DaoImpl을 각각 이런 식으로 void형으로 바꿨고,

//DAO
public interface GroupDAO {
    void delete(Group group);
}


//DAOImpl
@Override
public void delete(Group group) {
    groupRepository.delete(group);
}

 

 

ServiceImpl 에서는 delete(gp.orElseThrow()); 를 해주어 gp가 null인 경우, NoSuchElementException가 발생하도록 해주었다.

    @Override
    public String deleteGroup(Long id) {
        Optional<Group> gp = groupDAO.getGroupInfo(id);
        groupDAO.delete(gp.orElseThrow());
        return "삭제완료";
    }

 

null인 경우 이렇게 에러가 뜨고,

 

 

값이 존재하면 삭제한 후 삭제완료라고 뜬다 ~

'토이 프로젝트 > 함밥' 카테고리의 다른 글

함밥 | 220826  (0) 2022.08.26
함밥 | 220818  (0) 2022.08.18
함밥 | 220813  (0) 2022.08.13
함밥 | 220812  (0) 2022.08.12
Comments