전체 글 8

Lombok(롬복)

본 포스트는 이동욱님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 참고하여 작성하였습니다. 롬복을 활용하여 리팩토링을 해보자 Lombok (롬복) 이란? 롬복은 자바 개발할 때 자주 사용하는 코드 Getter, Setter 기본생성자, toString 등을 어노테이션으로 자동 생성 해주는 라이브러리다. 롬복으로 변경하고 문제가 생기는지 실제로 적용해보자! 먼저 Dto를 하나 생성한다. HelloResponseDto.java import lombok.Getter; import lombok.RequiredArgsConstructor; @Getter @RequiredArgsConstructor public class HelloResponseDto { private final String name; ..

공부/Spring 2022.06.18

스프링 부트에서 테스트 코드를 작성

본 포스트는 이동욱님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 참고하여 작성하였습니다. 스프링 부트에서 테스트 코드를 작성하자 TDD라는 단어는 많이 들어봤지만 내용은 자세히 몰랐는데 마침 이 책에 나와있다. TDD는 테스트 Test Driven Development의 약자로 테스트가 주도하는 개발을 이야기한다. 단위 테스트 코드를 작성함으로써 얻는 이점은 다음과 같다. 단위 테스트는 개발단계 초기에 문제를 발견하게 도와줍니다. 단위 테스트는 개발자가 나중에 코드를 리팩토링하거나 라이브러리 업그레이드 등에서 기존 기능이 올바르게 작동하는지 확인할 수 있습니다. 단위 테스트는 기능에 대한 불확실성을 감소시킬 수 있습니다. 단위 테스트는 시스템에 대한 실제 문서를 제공합니다. 단위 테스트 자체..

공부/Spring 2022.06.18

가변인자(varargs)와 오버로딩

기존에는 메소드의 매개변수 개수가 고정적이었으나, JDK1.5부터 동적으로 지정할 수 있으며 이를 '가변인자(variable arguments)' 라고 한다. 선언 방법 '타입... 변수명' class Test { static String something(String... args) { // to be } } 만약 여러 문자열을 하나로 결합하여 반환하는 make 메소드를 작성한다면, 아래와 같이 매개변수의 개수를 다르게 해서 여러 개의 메소드를 작성해야할 것이다. String make(String s1, String s2) { ... } String make(String s1, String s2, String s3) { ... } String make(String s1, String s2, String..

공부/Java 2022.06.12

클래스 메소드(static 메소드)와 인스턴스 메소드

변수에서 그랬던 것과 같이, 메소드 앞에 static이 붙어 있으면 클래스 메소드 붙어 있지 않으면 인스턴스 메소드이다. 그렇다면 클래스를 정의할 때, 어느 경우에 static을 사용해서 클래스 메소드로 정의해야하는 것일까? 인스턴스 메소드는 인스턴스 변수와 관련된 작업을 하는, 즉 메소드의 작업을 수행하는데 인스턴스 변수를 필요로 하는 메소드이다. 그런데 인스턴스를 생성해야만 만들어지므로 인스턴스 메소드 역시 인스턴스를 생성해야만 호출할 수 있는것이다. 반면에 메소드 중에서 인스턴스와 관계없는(인스턴스 변수나 인스턴스 메소드를 사용하지 않는) 메소드를 클래스 메소드(static메소드)로 정의한다. class MyMath2 { long a, b; // 인스턴스 변수 a, b만을 이용해서 작업하므로 매개변..

공부/Java 2022.06.12

인스턴스 변수와 클래스 변수

인스턴스 변수와 클래스 변수에 대해 포스팅 한다. 변수는 클래스변수, 인스턴스변수, 지역변수 모두 세 종류가 있다. 멤버변수를 제외한 나머지 변수들은 모두 지역변수이며, 멤버변수 중 static이 붙은 것은 클래스변수이고 붙지 않은 것은 인스턴스변수 이다. class Variables { /* 클래스 영역 */ int iv; // 인스턴스 변수 static int cv; // 클래스 변수 (static 변수, 공유 변수) void method() { /* 메소드 영역 */ int iv = 0; // 지역변수 } } 변수의 종류 선언위치 생성시기 클래스 변수 (class variable) 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스 변수 (instance variable) 인스턴스가 생성되었을 때 지..

공부/Java 2022.06.12

JUnit을 이용한 단위 테스트와 Assert 메소드

내가 있던 SI 프로젝트는 규모가 너무 커서 JUnit을 활용한 단위 테스트를 적용할 수 없었다. 그래서 난 JUnit을 사용해본적이 없다. 대부분 Logger.debug를 이용하여 파라미터만 콘솔에 출력했다. JUnit을 활용한 테스트 코드 작성이 목표였기 때문에 관련 내용을 정리해보고자 한다. 1. JUnit이란? 자바용 단위 테스트 도구이다. 2. 단위테스트(Unit Test)란? - 소스코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차 - 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차 3. JUnit 특징 - @Test 메소드가 호출할 때마다 새로운 인스턴스를 생성하여 독립적인 테스트가 이루어지게 함 - 단정(assert)메소드로 테스트 케이스의 수행 ..

공부/Java 2022.03.31

HTTP 서버 응답 코드

404 Not Found 403 Forbidden? 개발을 진행하다 보면 콘솔에서 여러 가지 응답 코드를 볼 수 있는데 보기만 하고 대충 넘어갔지 그 응답 코드가 왜 나오는지는 모르고 넘어갔던 경험이 있다. 그래서 더 이상 모르고 넘어가면 안되기에 찾아보았다. 응답 코드가 뭘까? 클라이언트에서 서버로 어떠한 요청을 하면 서버는 응답을 보내준다. 정상적으로 처리된 경우 응답은 성공과 함께 결과 값을 보내주기도 하고, 정상적으로 처리되지 않은 경우에는 실패 응답과 에러 정보를 보내주기도 한다. 예를 들어 서버가 정상 응답한 경우 200 코드를 보내준다. 200을 포함하여 200번대 응답은 서버에서 정상적으로 처리하여 응답한 경우, 보내주는 값들이다. 코드는 100번대 단위로 응답 코드가 구분되어 있다. - ..

공부/뭐더라 2022.03.05