목록backend-framework/Spring (7)
yeonuel-tech

이전까지는 단위 테스트에 대해 명확히 이해하지 못하고 프로젝트를 했던 것 같습니다. 그렇기에 제가 작성한 테스트 코드에 어려운 점들이 있었습니다첫 번째로 제가 작성하고 있는 테스트가 필요 이상으로 복잡했습니다. 두 번째로 프로젝트 외부 환경 예를 들어서 DB 테이블의 데이터가 변경됨에 따라 테스트 코드의 결과가 달라졌습니다. 이 부분이 가장 골칫거리였습니다.첫 번째 부분을 살펴보겠습니다. 밑에 코드를 참고하면 좋을것 같습니다. 이 테스트 코드는 단위 테스트에 대해 이해하지 못하고 있었을 때 작성한 부분입니다. 일단, 테스트 초기화 부분을 보면 많은 작업을 해야하는 것을 볼 수 있습니다. (코드)제가 개발한 부분은 문의글입니다. 문의글에는 문의글과 카테고리, 문의글 상태 등이 있고 이를 다루기 위한 dao..

일단, 제가 스프링의 AOP와 데코레이터 패턴을 적용하려고 했던 이유는 다음과 같습니다. TDD를 통해서 구현이 완료되고 리팩토링 과정 중에 중복된 코드를 발견했고 추후 변경이 일어난다고 가정 했을 때 어떻게 처리하면 좋을 지 생각하게 되었습니다. 그 결과로 나온 대안점이 스프링의 AOP를 사용하냐 아니면 데코레이터 패턴을 사용하냐였습니다. 밑에는 제가 작성한 코드입니다. 해당 코드에는 서로 다른 관심을 갖은 코드가 보입니다. 첫 번째는 회원 등록 로직이고 두 번째는 DB 상의 네트워크 장애시 재시도를 통해 복구하는 로직입니다. 두 번째 코드는 다른 부분에도 똑같이 적용될 수 있기 때문에 코드의 중복으로 판단했습니다. 또한, 특정 외부환경 문제로 인한 처리 로직으로부터 순수한 비즈니스 로직을 분리하는 것..

오브젝트란 객체를 의미합니다. 용어 일관성을 위해 해당 글에서는 오브젝트 용어를 사용하겠습니다. 오브젝트는 모든 애플리케이션의 기본 구성요소입니다. 현재는 OOP 프로그래밍과 설계를 통해 애플리케이션을 구현해 나갑니다. 각 오브젝트 간의 특정 역할이 있고 여러 오브젝트와 관계를 맺음으로써 협력하여 하나의 애플리케이션을 운영합니다. 위와 같이 애플리케이션을 구성한 이유는 간단합니다. “변경에 유리하도록 설계”하기 위해서 입니다. 결국에는 하나의 코드를 각 관심사 별로 분류하여 오브젝트로 정의하고 애플리케이션 운영시점에 여러 오브젝트들 간의 관계를 맺고 하나의 관심에 여러 오브젝트를 바꿔가면서 여러 종류의 코드를 만들어 나가는 것입니다. 그리하여 “변경에 유리하도록 설계” 할 수 있습니다. 그렇기에 스프링에..
앞선 글에서는 난 “스프링 DI/IoC 핵심 내용을 요약 정리 글”을 작성했다. (스프링 DI/IoC - 파트1(핵심 내용 요약) - https://yeoneul-tech.tistory.com/m/132) 이제 하나 하나씩 깊게 파고들어보자. DI란 무엇일까? “의존성 주입, 하나의 객체가 다른 객체의 의존성을 제공하는 것을 의미한다“ 그러면 IoC는 무엇일까? ”제어의 역전, 결정권이나 제어권을 외부로 넘기는 것, 그래서 외부에서 결정하거나 제어할 수 있게 구성하는 것을 의미한다“ 여기서 “의존성”의 의미는 ”특정 객체가 다른 객체를 알고있는, 사용하고 있는 것“을 의미한다. 즉, 해당 객체가 작동하려면 특정 객체를 사용해야하는 경우를 말한다. 그러면, 왜 DI로 의존성 객체를 주입 받아야 하는 것일까..

스프링의 핵심 기능은 크게 세 가지로 나눌 수 있다. - 1. DI/IoC(의존성 주입/ 제어의 역전) 의존관계 설정 - 2. 서비스 추상화 - 3. AoP(횡단 관심사 분리) 오늘은 첫 번째 핵심 기능인 “DI/IoC(의존성 주입/ 제어의 역전) 의존관계 설정” 에 대해 알아보자 사실, 무언가를 공부할 때 전체틀에서 파악하는 것이 중요하다. 전체틀을 파악하고 세부적인 내용을 채워나가는 것이 좋다. 그래서 오늘은 간단하게 요약해서 설명하려고 한다. 밑에는 스프링 IoC/DI 용어 및 개념 정리 글을 그림과 함께 칠판에 작성했다 - DI : 의존성 주입, 외부에서 주입 받아서 사용함 - IoC : 제어의 역전, 제어권을 외부로 넘긴 것(관심사의 분리 - 생성과 사용 관점에서 코드를 분리함). 자기(객체) ..

# 웹 페이지 반환하는 경우 # 데이터 반환 하는 경우 # 레이어드 아키텍쳐 분리 이유 # MVC 패턴이란? # 데이터 변환해주는 객체

나는 지금 정석코딩 학원에서 스프링에 대해 배우고 있다. 원장님이 말씀하는 스프링의 핵심은 "객체를 미리 생성해서 맵에 등록하여 관리하는 것"이다. 그래서 우리가 스프링 프로젝트를 시작할 때 항상 확인해야 하는 것은 2가지 rootAC(RootApplicationContext), ServletAC(WebApplicationContext)가 있다. rootAc에는 non-web 객체가 등록되고 servletAC에는 web 관련 객체가 등록된다. 일단, 그림으로 그리면 다음과 같다 . Map이 이원화 되어 있는데, 이는 Spring은 web 말고도 여러 프로젝트가 있기 때문에 각 프로젝트 맵 간의 혼선을 방지하기 위함이다. 그래서, 우리가 스프링 웹 프로젝트를 실행할 때 체크해야 하는 주된 부분은 2가지가 ..