//////
Search
🍒

[1020] TDD로 스택 구현하기, 스프링 내용 정리, 토비의 스프링

생성일
2022/11/10 07:58
태그
TodayILearn
Spring
java
생성일 1

TDD로 스택 구현하기

스택(Stack)의 개념

한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out) 형식의 자료 구조이다.

스택(Stack)의 연산

pop() : 스택에서 가장 위에 있는 항목을 제거한다.
push(item) : item 하나를 스택의 가장 윗 부분에 추가한다.
peek() : 스택의 가장 위에 항목을 반환한다.
isEmpty() : 스택이 비어 있을 때 true를 반환한다.

Junit5 어노테이션

Test code를 작성할 때 사용하는 어노테이션을 정리한다.
Junit5의 기본 어노테이션은 다음과 같다.
@Test@BeforeAll@BeforeEach@AfterAll@AfterEach@Disabled, @DisplayName
@Test : 이 어노테이션을 붙이면 Test 메소드로 인식하고 테스트 한다. Test 메소드는 Test 클래스 자체를 실행하지 않고도 개별 실행(개별 Test)이 가능하다.
@BeforeAll : 이 어노테이션을 붙이면 그 메소드는 Test 클래스를 초기화 할 때 딱 한 번 수행된다. 메소드 접근제어자는 static으로 선언해야 한다.
@BeforeEach : 이 어노테이션을 붙이면 그 메소드는 Test 메소드가 실행되기 전에 수행된다. 개별 Test 메소드를 실행하였을 때 @BeforeEach 는 수행되지만, @BeforeAll은 수행되지 않는다.
@AfterAll : 이 어노테이션을 붙이면 그 메소드는 Test 클래스를 모두 실행시킨 후 딱 한 번 수행된다. 메소드 접근제어자는 static으로 선언해야 한다.
@AfterEach : 이 어노테이션을 붙이면 그 메소드는 Test 메소드가 실행된 후 수행된다. 개별 Test 메소드를 실행하였을 때 @AfterEach 는 수행되지만, @AfterAll은 수행되지 않는다.
@Disabled : 이 어노테이션을 붙이면 그 메소드는 무시된다.
@DisplayName : Test 클래스 혹은 메소드의 사용자 정의 이름을 선언한다.

Junit5 Assertions

Test code를 작성할 때 사용하는 Assertions를 정리한다.

1. assertEquals

두 값을 비교하여 일치 여부 판단

2. assertTrue & assertFalse

특정 조건이 true인지 false인지 판단

3. assertThrows

특정 예외가 발생하였는지 확인
첫 번째 인자는 확인할 예외 클래스
두 번째 인자는 테스트 하려는 코드
TDD로 스택 구현하기

Spring

스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공한다.

스프링의 주요 특징

POJO (Plain Old Java Object) 방식

‘순수하고 역사있는 자바 객체’ 방식을 지향한다.
스프링 프레임워크 이전에는 특정 기술과 환경에 종속되어 자바가 객체지향 설계의 장점을 잃어버리는 경우가 많았다.
스프링은 이러한 방식을 지양하며 POJO를 따른다.
자세한 내용은 링크를 참고하자.

의존성 주입 (Dependency Injection, DI)

의존 관계는 의존 대상이 변했을 때 그에 영향을 받을 수 있는 관계이다.
가령 햄버거 가게 요리사는 햄버거 레시피에 의존할 수 있다. 코드는 다음과 같다.
class BurgerChef { private HamBurgerRecipe hamBurgerRecipe; public BurgerChef() { hamBurgerRecipe = new HamBurgerRecipe(); } }
Java
복사
의존성 주입은 BurgerChef가 의존하고 있는 HamBurgerRecipe를 외부에서 결정하고 주입하는 것이다.
이러한 의존성 주입은 코드 재사용을 높이고 모듈 간의 결합도를 낮춘다. 또한 테스트하기 좋은 코드가 된다.

추가할 내용

bean이 뭘까
container가 뭘까
autowired가 뭘까
예외처리