일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 그리디알고리즘
- 장고
- 프로그래머스
- DP
- Bellman-Ford
- 데이터베이스
- 동적계획법
- 모각코
- SQL
- programmers
- 실습
- 알고리즘
- 최소스패닝트리
- Planned
- 마라마라빔
- 파이썬
- 백준
- MyPlaylist
- 함밥
- BFS
- DFS
- 종합설계
- codetree
- django
- 백트래킹
- Kruskal
- 코드트리
- B대면노래방
- 소프트웨어공학
- minimum spanning tree
- Today
- Total
Leta Learns
함밥 | 220825 본문
#그룹 수정 기능
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
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 |