목록으로

Programming Notes

DAY-19] 231226 TIL(Spring 입문 2주차 - Service 연결하기)

오늘은 Spring 입문 2주차를 마무리하며, 드디어 Service 계층을 연결하는 작업을 진행했습니다. 이전까지는 Controller에서 직접 Repository에 접근하는 방식으로 개발했는데, Service 계층을 도입함으로써 코드의 모듈화와 재사용성을 높일 수 있게...

오늘은 Spring 입문 2주차를 마무리하며, 드디어 Service 계층을 연결하는 작업을 진행했습니다. 이전까지는 Controller에서 직접 Repository에 접근하는 방식으로 개발했는데, Service 계층을 도입함으로써 코드의 모듈화와 재사용성을 높일 수 있게 되었습니다. Controller는 비즈니스 로직과 분리되어 요청을 처리하고, Service는 비즈니스 로직을 담당하고 Repository를 통해 데이터베이스와 상호작용하는 구조로 변경했습니다. 처음에는 Service와 Repository를 연결하는 과정에서 의존성 주입에 대한 이해가 부족하여 약간의 어려움을 겪었지만, 다행히 예제 코드와 관련 자료들을 참고하여 성공적으로 연결할 수 있었습니다. 이제 Controller에서 Service를 호출하여 데이터를 처리하고, Service에서 Repository를 통해 데이터베이스에 접근하는 명확한 구조를 갖추게 되었습니다. 이를 통해 코드의 가독성과 유지보수성이 향상되었다는 것을 확인할 수 있었습니다.

오늘 알고리즘 문제로는 "정수 배열에서 서로 다른 인덱스의 두 수를 더하여 만들 수 있는 모든 수를 오름차순으로 배열에 담아 반환하는 문제"를 풀었습니다. 처음에는 이중 반복문을 사용하여 모든 조합을 만들고, answer 배열에 중복을 확인하며 추가하는 방식으로 풀었습니다. 중복 확인을 위해 if( !(sum in answer) ) { answer += sum } 과 같은 코드를 사용했는데, 생각보다 코드가 길어지고 효율성이 떨어지는 느낌이었습니다. 그러다 문득, 모든 조합을 먼저 생성하고 toSet() 함수를 이용하여 중복을 제거한 후, sorted() 함수로 정렬하는 방법을 떠올렸습니다. 이 방법은 코드가 훨씬 간결해지고 가독성도 높아졌습니다. toSet() 함수를 통해 중복 제거 과정을 한 줄로 처리할 수 있다는 점이 인상적이었습니다. 두 가지 방법 모두 문제를 해결할 수 있지만, toSet() 함수를 이용한 방법이 더 효율적이고 코드를 깔끔하게 작성할 수 있다는 것을 알게 된 유익한 경험이었습니다. 다음에는 더 효율적인 알고리즘을 찾아보는 연습을 해봐야겠습니다.

결론적으로 오늘은 Spring의 Service 계층을 연결하는 작업과 알고리즘 문제 해결을 통해 여러 가지를 배우는 알찬 하루였습니다. Service 계층의 도입으로 코드의 구조가 개선되었고, 알고리즘 문제 해결 과정에서 다양한 접근 방식을 고민하며 문제 해결 능력을 향상시킬 수 있었습니다. 앞으로도 꾸준히 학습하여 Spring 프레임워크에 대한 이해도를 높이고, 더욱 효율적인 코드 작성 능력을 키워나가도록 노력하겠습니다.