단일 기능을 지원하는 기존의 많은 크롬 확장 프로그램들과 달리 사용자의 웹 서핑에 도움을 주는 여러 기능들을 모듈화하고 추가적인 확장이 가능한 플랫폼 형식의 크롬 확장 프로그램을 개발하는 것을 목표로 하는 프로젝트
- 탭 페이지 위에서 기본적인 검색, 인기 유튜브 영상, 날씨 및 위치 정보, 일정 관리, 테마 배경 기능 제공
- 구글의 OAuth2 인증 방식을 사용한 로그인을 통해 사용자 별 테마 및 사용 기능을 저장하고 불러오는 시스템
- 크롬 확장 플러그인 팝업 창을 통해 자주 방문하는 사이트, 최근 방문 기록, 펼쳐진 탭 관리 기능 제공
- Spring Boot 프레임워크를 사용한 백엔드 개발
- Mysql DB 사용 및 스프링 연동
- JPA를 활용하여 설계한 테이블들에 대한 엔티티 클래스 개발
- 클라이언트와의 API 통신을 위한 컨트롤러 계층 개발
컨트롤러에서 API 요청에 대해 응답하는 부분에 계속해서 에러가 발생하는 것을 확인할 수 있었다. 확인해보니 양방향 연관관계에 있는 엔티티가 API 응답으로 return하게 되면 서로 참조하는 객체를 계속 호출하면서 무한 루프에 빠져 결국 에러가 발생한다는 것을 알게 되었다. 이를 해결하기 위해 API 통신에 필요한 데이터들만 포함하는 DTO 클래스를 각 엔티티 별로 정의하여 해당 객체를 응답으로 return하면서 순환참조를 예방하여 에러 발생을 막을 수 있었다.