본문 바로가기

Spring

📝 Spring Bean이란 무엇이며 어떻게 등록해야 할까? 1. Spring Bean이란? Spring의 Bean은 Spring IOC Container가 관리하는 객체들을 의미한다. 자바 애플리케이션은 동작을 제공하는 객체들로 이루어져있다. 이 때 객체들은 독립적으로 동작하는 것보다 서로 상호작용하며 동작하는 경우가 많다. 이렇게 상호작용하는 객체를 ‘객체의 의존성(dependency)’이라고 표현한다. 스프링에서는 스프링 컨테이너가 객체들을 생성하고 객체끼리 의존성을 주입하는 역할을 한다. 스프링 컨테이너가 생성한 객체들을 Bean이라고 하며 Bean은 Spring에서 사용하는 어플리케이션 객체라고 이해할 수 있다. Spring Bean을 사용하면 여러 클래스에서 따로 new 연산을 하여 동일한 객체를 만들 필요가 없이 spring IOC Container에.. 더보기
📝 gradle이란 무엇이며 어떠한 장점이 있을까? Gradle(그래들)은 빌드 자동화,개발 지원에 중점을 둔 도구를 말한다그래들은 그루비(Groovy)를 기반으로 Ant,maven의 장점을 취합하여 만들어졌다. 장점 직관적임 Maven과 다르게 xml로만 이루어져있지않아 내가 원하는 것을 찾기가 쉬움. 각 작업에 필요한 라이브러리들만 가져올수있음 필요한 범위에 따라서 다른 라이브러리를 가져오는 방식 점진적 컴파일링을 지원하기에 부분적으로 수정된 내용은 빠르게 재 컴파일링이 가능함. 즉 그래들은 Ant -> Maven -> Gradle 순으로 나왔기 때문에 앞에 나온 자동화 도구들의 단점을 해결한 자동화 도구이다. 더보기
📝 restAPI의 put 과 patch 는 어떤 차이점이 있을까요? 어떤 경우에 사용하면 좋을까요? PATCH와 PUT은 둘 다 데이터의 수정을 위한 method이다. PATCH : which is used to apply partial modifications to a resource PUT : method requests that the state of the target resource be created or replaced with the state defined by the representation enclosed in the request message payload 예를 들어, PUT 요청 시 요청을 일부분만 보낸 경우 나머지는 default 값으로 수정되는 게 원칙이므로, 바뀌지 않는 속성도 모두 보내야 한다. (만약 전체가 아닌 일부만 전달할 경우, 전달한 필드외 모두 null 혹은.. 더보기
📝 Controller, Service, Repository 가 무엇인가요? 📝 Controller, Service, Repository 가 무엇인가요? Component: 스프링에서 관리하는 컴포넌트 Controller, Service, Repository는 컴포넌트의 하위 개념 Controller는 Service를 호출하고 Service는 Repository를 호출함 Controller: 제일 바깥 쪽에서 요청을 받고, 응답을 되돌려주는 역할 Service: 중간에서 구체적인 작업 순서를 결정 Repository: DB와 직접 소통함으로써 자료를 생성하고, 조회하고, 변경하고, 삭제하는 역할 더보기
📝 JPA 가 무엇인가요? 1. JAP (Java Persistence API, 자바 ¹영속성 ²API) 자바로 만든 객체와 데이터베이스 테이블을 ³ORM 기술을 이용하여 매핑하고, 사용하는 방식을 정의한 ⁴인터페이스 cf) Spring Data JPA: JPA 사용 편이를 위해 만들어진 모듈로, JPA를 한 단계 추상화시킨 Repository라는 인터페이스 사용 1) 영속성(Persistence): 지속적인 것, 영원한 것을 뜻하는 단어로 자바로 만든 객체를 DB에 지속하는 것 2) API(Application Programming Interface):어플리케이션(소프트웨어) 간 서로 통신할 수 있게하는 약속 3) ORM(Object Relational Mapping): 애플리케이션 클래스와 RDB(Relational DataB.. 더보기
테스트 코드와 제이유닛(JUnit) 1. JUnit이란? 자바 프로그래밍 언어용 단위 테스트 프레임워크 2. JUnit 5 모듈 구성 1) JUnit 플랫폼: 테스팅 프레임 워크를 구동하기 위한 런처와 테스트 엔진을 위한 API 제공 2) JUnit 주피터(Jupiter): JUnit5를 위한 테스트 API와 실행 엔진을 제공 (api 모듈 / prams 모듈 / engine 모듈 포함) 3) JUnit 빈티지(Vintage): JUnit3, JUnit4로 작성된 테스트를 JUnit5 플랫폼에서 실행하기 위한 모듈 제공 * build.gradle 파일을 보면 JUnit 사용을 위한 환경설정이 이미 되어 있음 2. @Test 어노테이션 테스트로 사용할 클래스를 만들고 @Test 어노테이션을 메서드에 붙이면 됨 - 테스트 클래스명은 주로 접미.. 더보기
Mock object를 이용한 단위 테스트 1. Mock object (가짜 객체)? 이상적으로, 각 테스트 케이스는 서로 분리되어야 한다. 이를 위해 가짜 객체(Mock object)를 생성하는 것도 좋은 방법이다. 2. Mock object 를 왜 사용할까? 분리 되기 어려운 클래스들을 각각 테스트 하기 위해 사용 Controller 클래스만 테스트 하기 위한 테스트 범위: Controller, Service, Repository Service 클래스만 테스트 하기 위한 테스트범위: Service, Repository Repository 클래스만 테스트 하기 위한 테스트 범위: Repository 3. Mock object 를 통한 분리 Mock object: 실제 객체와 동일한 클래스명, 함수명이 있는 실제 객체와 겉만 같은 객체 MockR.. 더보기
TDD (Test-Driven Development) 테스트 주도 개발 1. TDD (Test-Driven Development) 테스트 주도 개발의 의미 테스트가 개발을 주도해 나가는 것 2. TDD의 흐름 1) 기존 개발의 흐름(AS-IS) 설계 → 개발 → 테스트 (→ 설계 수정) 2) TDD의 흐름(TO-BE) 설계 → 테스트 (→설계 수정) → 개발 - 기능을 검증하는 테스트를 먼저 작성 - 작성한 테스트를 통과하지 못하면 테스트를 통과할 만큼만 코드 작성 - 테스트 통과 후 개선할 코드가 있으면 리팩토링 - 리팩토링 후 다시 테스트를 실행하여 기존 기능이 잘 되고 있는지 확인 필수 -> 위 과정을 반복하여 점진적으로 기능을 완성해 나가는 것이 TDD의 흐름 3) 레드(Red)-그린(Green)-리팩터(Refactor) - TDD 사이클을 레드-그린-리팩터로 부르기.. 더보기