CSE(58)
-
@SpringJUnitConfig 어노테이션이란?
Spring Boot 기반으로 진행하고 있는 프로젝트에서 Test를 진행하다, @SpringJUnitConfig를 붙이느냐 안붙이느냐에 따라 생성자 자동 주입이 되느냐 안되느냐가 결정되는 것을 볼 수 있었다. 물론 이를 통해 당연히 해당 어노테이션은 자동 주입을 해주는구나를 알 수 있지만, 그래도 정확히 확인을 해보았다. 1. Spring Framework 공식문서 Spring Framework 공식 문서에 의하면 @SpringJUnitConfig는 SprintExtension.class의 @ExtendWith와 @ContextConfiguration 이 합쳐진 어노테이션이라고 한다. 따라서 위의 두 어노테이션을 찾아보자. @ExtendWith : 해당 어노테이션을 통해 하나 이상의 extension을 ..
2022.04.26 -
@SpringBootApplication 어노테이션 뜯어보기
내부에 @EnableAutoConfiguration을 확인할 수 있다. AutoCOnfiguration기능이 해당 어노이테이션을 통해 이루어지는 것을 볼 수 있다. (1) @EnableAutoConfiguration 이번에는 @EnableAutoConfiguration 안으로 들어오면 다음과 같다. Import 하는 부분이 있다. AutoConfigurationImportSelector이 import 되고 있는데 해당 클래스가 진짜 Autoconfiguration이 일어나게 하는 클래스이다. AutoConfigurationImportSelector 클래스 안으로 들어오면 다음 메소드를 찾을 수 있다. 해당 부분에 debug를 해보면 다음과 같은 사실들을 확인할 수 있다. getCandidateConfig..
2022.04.22 -
TDD (Test-driven Development)
1. TDD란? TDD는 Test-driven Development의 약자로, '테스트 주도 개발'이다. TDD를 알아보기 전에 TDD의 Test가 무슨 뜻인지를 알아보자 (1) Testing이란? Testing이란 제품 또는 서비스의 품질을 확인하는 과정으로 개발 분야에서는 소프트웨어의 버그를 찾는 과정을 말한다. 즉, 제품이 원하는대로, 예상하는대로 동작하는지 확인하는 과정이다. 이 때, 제품은 함수, 특정한 기능, Api 스펙 등을 말한다. 특정한 기능을 수행하는 코드가 있다면 그에 해당하는 테스트 코드를 작성한다. 그리고 해당 테스트 코드를 실행해서 모든 테스트가 패스되는지 확인을 하고, 테스트가 실패할 시, 어떤 부분이 잘못되었는지 확인하고 수정하는 과정을 거쳐야한다. (2) TDD란? 위에서 ..
2022.03.25 -
프록시 패턴 (Proxy Pattern)
1. Proxy Pattern? 프록시 패턴을 알아보기 전에, 프록시를 검색하면 다음과 같은 설명을 볼 수 있다. 일반적으로 프록시는 다른 무언가와 이어지는 인터페이스의 역할을 하는 클래스이다. 프록시는 어떠한 것(이를테면 네트워크 연결, 메모리 안의 커다란 객체, 파일, 또 복제할 수 없거나 수요가 많은 리소스)과도 인터페이스의 역할을 수행할 수 있다. 개념만으로는 감이 잘 오지 않으므로 프록시 패턴이 필요한 경우를 보자. 2. Proxy Pattern이 필요한 경우 예시 public class Service { public String runSomething(){ return "run Service"; } } public class ClientWithNoProxy { public static void..
2022.03.25 -
[자바 객체 지향] 객체 지향의 4대 특성 - 추상화
1. 추상? 추상화? 객체 지향의 추상화의 의미를 알아보기 위해 먼저 '추상'과 '추상화'의 사전적 정의를 살펴보자 네이버의 국어 사전에 '추상'과 '추상화'를 검색하면 다음과 같은 결과를 얻을 수 있다. 추상 : 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용 추상화 : 추상적인 것으로 됨. 또는 그렇게 만듦. 즉, 추상화는 '사물/개념에서 공통되는 속성을 추출하고, 그렇게 만들다' 라는 뜻이다. 이 개념을 객체지향에 적용해보자 2. 객체 지향에서의 추상화 객체 지향에서 '사물/개념'에 대응 되는 것은 객체이고, '공통되는 속성'에 대응되는 것은 클래스라고 할 수 있다. 즉, 객체에서 공통되는 속성을 추출해서 이를 클래스로 만드는 것이 객체 지향에서의 추상화이다. 그리..
2022.03.24 -
[자바 객체 지향] 객체 지향의 4대 특성과 클래스&객체
1. 객체 지향은 인간 지향이다 (1) 기존의 구조적 프로그래밍 언어 : Divide and Conquer (D&C) - Divide and Conquer은 프로그램의 동작/기능들을 논리적인 단위인 함수로 나누어 블록화해서 작성하는 것이다. => 천 리 길도 한 걸음부터! - 기존의 구조적 프로그래밍 언어에서 가장 중요한 것은 함수였다. - 이 때, 함수의 목적은 중복을 제거하고 논리를 분할하는 것이다. (2) 객체 지향 - 우리가 실생활에서 사물을 인지하는 방식대로 프로그래밍 할 수 있지 않을까?라는 생각에서 시작되었다. => 따라서, 객체 지향은 직관적이다. 2. 클래스랑 객체가 붕어빵틀과 붕어빵이라고? 우리는 Java 기본서를 볼 때, 클래스가 붕어빵틀에, 객체가 붕어빵에 비유되는 것을 흔히 볼 수..
2022.03.24