전체 글 93

Maven 이란?

개발자들이 단순, 반복적으로 실행하는 빌드 작업을 자동화하여 업무를 효율화 하기 위해 생겨났다. 개발환경을 구축하는데 있어서 빌드 환경 자동화 말고 중요한 포인트가 있다.1. 빌드 환경 자동화2. 통합 개발 환경 구축 (이클립스, 인텔리제이)3. 형상관리 툴 구축 (git, svm같이 문서 관리 툴)4. CI 툴 구축 (젠킨스 등) 프로젝트 시작 시기에 업무분석과 설계작업을 시작하면서 개발환경까지 구축하는데 어느정도 시간이 소요된다.프로젝트에 참여하는 개발자들이 개발 환경에 익숙해질 수 있도록 교육을 하거나 여분의 시간을 할애해야한다.이를 통해 단기적으로 속도가 떨어질 수 있지만 장기적으로 봤을 때 효율성을 극대화 시킬 수 있다.또한 핵심 업무에 많은 시간을 투자할 수 있는 여유를 만들어주기도 한다. 프..

SpringBoot 2024.08.28

Path Variable과 Request Param

Client에서 서버로 HTTP 요청을 보낼 때 데이터를 함께 보낼 수 있다.서버에서는 이 데이터를 받아서 사용해야하는데 데이터를 보내는 방식은 여러가지가 있기에 여러 방식에 대한 학습이 필요함 Path Variablehttp://localhost:8080/hello/request/star/Robbie/age/95 // [Request sample]// GET http://localhost:8080/hello/request/star/Robbie/age/95 @GetMapping("/star/{name}/age/{age}") @ResponseBody public String helloRequestPath(@PathVariable String name, @PathVariable int ..

SpringBoot 2024.08.06

제네릭 - 제한된 타입 파라미터/ 와일드카드

경우에 따라 타입 파라미터를 대체하는 구체적인 타입을 제한할 필요가 있다. 숫자를 연산하는 제네릭 메소드는 대체 타입으로 Number 또는 자식클래스 (Byte, Short, Integer ....)로 제한 할 필요가 있다. 상위 타입은 클래스뿐만 아니라 인터페이스도 가능하다. 인터페이스라고 해서 implements를 사용하진 않는다. package ch13.sec04;public class GenericEx { // 제한된 타입 파라미터를 갖는 제네릭 메소드 public static boolean compare(T t1, T t2) { System.out.println("compare: " + t1.getClass().getSimpleName() + ", " + ..

Java 2024.07.11

제네릭(Generic) 메소드

제네릭 메소드는 타입 파라미터를 가지고 있는 메소드를 말한다.제네릭 메소드는 리턴 타입 앞에 기호를 추가하고 타입 파라미터를 정의한 뒤, 리턴 타입과 매개변수 타입에서 사용한다. package ch13.sec03.ex01;public class Box { private T t; public T get() { return t; } public void set(T t) { this.t = t; }} package ch13.sec03.ex01;public class GenericEx { public static Box boxing(T t) { Box box = new Box(); box.set(t); return..

Java 2024.07.11

제네릭 (Generic)

제네릭이란 결정되지 않은 타입을 파라미터로 처리하고 실제 사용할 때 파라미터를 구체적인 타이븡로 대체시키는 기능 package ch13.sec01;public class Box { public T content;} Box 클래스에서 결정되지 않은 content 타입을  T라는 타입 파라미터로 정의했다. 는 타입 파라미터를 뜻하는 기호로, 타입이 필요한 자리에 T를 사용할 수 있음을 알려준다.여기서 Box 클래스는 T를 content 필드의 타입으로 사용했다. 즉 Box 클래스는 T가 무엇인지 모르지만,Box 객체가 생성될 시점에 다른 타입으로 대체된다는걸 알고있다. package ch13.sec01;public class GenericEx { public static void main(Stri..

Java 2024.07.10

어노테이션

@으로 작성되는 요소를 어노테이션이라고 한다.어노테이션은 클래스 또는 인터페이스를 컴파일하거나 실행할 때 어떻게 처리해야 할 것인지를 알려주는 설정 정보이다. 어노테이션의 세가지 용도1. 컴파일 시 사용하는 정보 전달2. 빌드 툴이 코드를 자동으로 생성할 때 사용하는 정보 전달3. 실행 시 특정 기능을 처리할 때 사용하는 정보 전달 컴파일 시 사용하는 정보 전달의 대표적인 예는 @Override 어노테이션이다. @Override는 컴파일러가 메소드 재정의 검사를하도록 설정한다. 정확히 재정의 되지 않았다면 컴파일러는 에러를 발생 시킨다. 어노테이션 타입 정의와 적용어노테이션도 하나의 타입이므로 어노테이션을 사용하기 위해서는 먼저 정의부터 해야한다.어노테이션을 정의하는 방법은 인터페이스를 정의하는 것과 유..

Java 2024.07.10

정규표현식

문자열이 정해져 있는 형식으로 구성되어 있는지 검증해야 하는 경우가 있다.예를 들어 이메일이나 전화번호를 사용자가 제대로 입력했는지 검증할 때 이다.자바 정규표현식(Regular Expression)을 이용해서 문자열이 올바르게 구성되어 있는지 검증할 수 있다.기호설명.임의의 단일 문자 (개행 문자를 제외한 모든 문자)^문자열의 시작$문자열의 끝*0회 이상 반복 (전의 문자가 0번 이상 반복)+1회 이상 반복 (전의 문자가 1번 이상 반복)?0회 또는 1회 반복 (전의 문자가 0번 또는 1번 나타남)``[]문자의 집합 또는 범위 (e.g., [a-z]는 소문자 알파벳 a부터 z까지 중 하나)[^]NOT 연산 (e.g., [^a-z]는 소문자 알파벳이 아닌 문자)()그룹화 (하나의 단위로 묶어서 서브패턴을..

Java 2024.07.10

래퍼 (wrapper) 클래스

자바는 기본 타입의 값을 갖는 객체를 생성할 수 있다. 이런 객체를 래퍼 클래스라고 한다.값을 포장하고 있다고 해서 붙여진 이름이다. 래퍼 클래스를 생성하기 위한 클래스는 java.lang 패키지에 포함되어 있는데, char 타입과 int 타입이 각각 Character, Integer인 것만제외하고는 기본 타입의 첫 문자를 대문자로 바꾼 이름을 가지고 있다. 기본 타입래퍼 클래스byteBytecharCharactershortShortintIntegerlongLongfloatFloatdoubleDoublebooleanBoolean 포장 객체는 포장하고 있는 기본 타입의 값을 변경할 수 없고, 단지 객체로 생성하는데 목적이 있다.이러한 객체가 필요한 이유는 컬렉션 객체 때문이다. 컬렉션 객체는 기본타입의 값..

Java 2024.07.10

롬복 (Lombok)

롬복은 JDK의 표준 라이브러리는 아니지만 개발자들이 즐겨 쓰는 자동 코드 생성 라이브러리이다. 롬복은 레코드와 마찬가지로 DTO 클래스를 작성할 때 Getter, Setter, hasCode(), equals(), toString() 메소드를  자동 생성하기 때문에 작성할 코드의 양을 줄여준다.  레코드와 차이는 필드가 final이 아니며, 값을 읽는 Getter는 getXxx(또는 isXxx)로, 값을 변경하는 Setter는 setXxx로 생성된다. 인텔리제이 환경에서는 플러그인에 자동으로 설치가 되어있으나, 현재 maven에 대한 개념이 없으므로 @RequiredArgsConstructor 어노테이션을 작성해 롬복을 프로젝트에 적용시켰다. package ch12.sec03.ex05;import lo..

Java 2024.07.09

레코드 선언

DTO를 작성할 때 반복적으로 사용되는 코드를 줄이기 위해 java14부터 레코드(record)가 도입되었다. package ch12.sec03.ex04;public record Member(String id, String name, int age) {} class 대신에 record 키워드를 사용해 사용할 수 있다. 레코드 소스를 컴파일하면- 변수타입과 이름을 이용해서 private final 필드가 자동으로 생성- Getter 메소드가 자동으로 추가- hashCode(), equals(), toString() 메소드를 오버라이딩한 코드 자동 추가 package ch12.sec03.ex04;public class RecordEx { public static void main(String[] arg..

Java 2024.07.09