전체 글 143

Spring - @RunWIth, @ExtendWith

1. Junit4 @RunWith Junit4에서는 @RunWith(클래스이름.class) 애노테이션으로 Junit Test 클래스를 실행하기 위한 Runner를 명시적으로 지정하여 Test code를 커스터마이징합니다. 여기서 Test Runner는 테스트 클래스 내에 존재하는 각 테스트 메서드 실행을 담당하고 있는 클래스입니다. 이는 테스트 클래스의 구조에 맞게 메서드를 실행하고 결과를 표시하는 역할을 수행합니다. 원래는 Juni4의 기본 테스트 러너는 BlockjUnit4ClassRunner이지만 대신에 @RunWith로 지정된 클래스를 이용해 클래스 내 테스트 메서드를 수행하도록 지정하여 사용합니다. 2. Junit5 그런데 Junit5부터는 @RunWith 애노테이션이 아닌 Extension이라..

Skills/Spring 2022.07.22

Java - final keyword

Java에서 클래스나 변수를 정의할 때, final 키워드를 사용합니다. final의 의미는 클래스나 변수에 final을 붙이면 시간이 지나도 정의된 상태가 변하지 않는다는 것을 보장합니다. 각각 어떻게 final을 선언하고 정의하는지 살펴보겠습니다! 1. Final class final class는 다른 클래스에서 상속하지(되지) 못하는 것을 의미합니다. final class Test1{ final String test; FT(){ test = "final class"; } } class Test2 extends Test1() {} // comfile error : Cannot assign a value to final variable '~' 클래스에 final을 붙이면 다른 클래스가 상속할 수 없는..

Skills/Java 2022.07.20

Java - Annotation

1. Annotation Java에서 Annotation(애노테이션)은 Java 소스 코드에 추가하여 사용할 수 있는 메타데이터(어떤 목적을 가지고 만들어진 데이터)의 일종으로 클래스 파일에 임베디드되어 컴파일러에 의해 생성된 후 JVM에 포함되어 작동하게 됩니다. 애노테이션의 목적은 개발을 하면서 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시키기 위해 도입되었습니다. 애노테이션 도입 이전에는 주석을 이용해(Annotation의 사전적 의미는 주석을 뜻함) 소스코드에 대한 설명을 적었는데, 이 주석을 javadoc.exe라는 프로그램을 사용해 문서를 작성했다고 합니다. 뭐 예를 들어, /** */를 사용하여 문서화 주식을 한 뒤, javadoc이라는 유틸을 사용해 HT..

Skills/Java 2022.07.19

Java - Collection

Java에서 Collection에 대해 부분적으로만 알고 있어, 전체적으로 숙지하고자 작성한 글입니다. 1. Collection Java에서 Collection은 객체 그룹을 저장, 조작하기 위한 아키텍처를 제공하는 프레임워크로 JDK1.2에서 Collection Framework라는 개념이 정의 되었습니다. Collection은 사진과 같이 List와 Set, Queue로 구성되며, Map은 Collection에 포함되지는 않지만 Collection으로도 분류한다고 합니다. import java.util.Collection import java.util.Map import java.util.* // util 디렉토리에 있는 모든 클래스를 import 호출 시에는 위와 같이 호출하게 되는데, util.*..

Skills/Java 2022.07.18

Java - iterator

Java에서는 Collection에 저장된 요소를 읽어올 때, Iterator라는 반복자를 지원합니다. iterator 인터페이스를 구현한 클래스의 인스턴스를 반환하는 iterator()를 정의하여 요소에 접근할 수있습니다. list와 set 인터페이스 모두 사용할 수 있습니다. 1) boolean hasNext() 해당 Iterator가 다음 요소를 가지고 있다면 true를 반환하고, 없다면 false를 반환합니다. 2) Next() Iteration의 다음 요소를 반환하는 메서드 입니다. 3) default void remove() 해당 반복자로 반환되는 마지막 요소를 컬렉션에서 제거하는 기능입니다. LinkedList lnkList = new LinkedList(); lnkList.add(4); l..

Skills/Java 2022.07.17

Java - Character Class를 이용한 출력

 Java에서는 Character 클래스를 이용하여 문자와 관련된 문제를 좀 더 간편하게 처리할 수 있는데 살펴보겠습니다. 먼저 Java에서 제공하는 Character Class의 사용법은 여기를 보면 자세히 알 수 있습니다. https://docs.oracle.com/javase/8/docs/api/java/lang/Character.html Character (Java Platform SE 8 ) Returns the int value that the specified character (Unicode code point) represents. For example, the character '\u216C' (the Roman numeral fifty) will return an int with a..

Skills/Java 2022.07.14

Spring - 의존관계 주입

0. 의존성 주입의 개념과 필요성 Spring 프레임워크는 핵심 프로그래밍 모델 중 하나로 의존관계 주입을 지원합니다. 이 의존관계 주입(의존성)은 외부에서 두 객체 간 관계를 결정해주는 디자인 패턴으로 인터페이스를 통해 클래스 레벨에서는 의존관계가 고정되지 않도록 하고, Runtime시에는 관계를 동적으로 주입하여 결합도를 낮추는 역할을 하게됩니다.  이 의존성 주입이 필요한 이유는 코드를 작성하는데 있어 여러개의 인스턴스를 만들지 않고, 최소한의 인스턴스를 구현하여 메모리 측면이나 관리 측면에서도 편해지기 때문에 객체 지향 프로그래밍에서 너무나도 중요한 개념입니다. (코드는 간단 명료할수록 좋다고 하죠?) 크게 3가지 주입방법으로 나뉘게 되는데 한 번 살펴보겠습니다. 1. Dependency I..

Skills/Spring 2022.07.12

Java - NullPointerException

1. NullPointerException NPE는 실제 값이 아닌 null값을 가진 객체나 변수를 호출할 때 발생하는 예외입니다. Java에서 데이터 타입은 기본과 참조 타입이 있습니다. Java에서 기본적으로 초기화되지 않은 객체 참조변수에 null을 할당하기 때문에, 참조 변수를 선언하고 초기화하지 않게되면 Java에서 자동으로 null로 지정된 특수한 값을 지정하게 됩니다. 예를 하나 살펴보자면 public class nullTest{ public static void main(String[] args){ String str1=null; System.out.println(str1.toString()); } } 위와 같은 경우는 null에 toString이 없기 때문에 예외가 발생하게 됩니다. 프로..

Skills/Java 2022.07.08

Java - Servlet(서블릿)

1. Servlet 서블릿은 동적 웹 페이지를 만들 때 사용되는 Java기반의 웹 애플리케이션 프로그래밍 기술입니다. 웹 페이지가 동작할 때는 HTTP 요청부터 시작해서 HTTP 메시지에서 Body의 내용을 파싱하고, 비즈니스 로직을 실행하여 HTTP 응답 메시지를 실행하게 되는 많은 동작이 이루어지는데, 위의 많은 과정을 간단한 메서드 호출만으로 자동으로 처리해주는 지원하는 역할을 합니다. 등장 배경을 보면 과거에는 정적인 자료(HTML, CSS..)만을 주고 받을 수 있었습니다. 이 때는 클라이언트가 자료를 요청하게 되면 서버는 미리 만들어진 자료를 저장하고 있다 반환하는 방식이었는데, 인터넷의 발달로 사용자가 많아지고 웹을 통해 더 많은 기능을 구현하고자 하는 방향으로 바뀌게 되었습니다. 이 때문에..

Skills/Java 2022.07.04

독서 - 호모 데우스, 미래의 역사

7월의 독서는 로 유명한 유발 하라리의 호모데우스 입니다. (사피엔스는 작년에 읽었습니다.) 사피엔스가 과거의 인류의 기원부터 시작해서 현재 호모 사피엔스에 대해 다뤘다면, 호모데우스는 현재 사피엔스가 어떻게 진화하게 될지 미래를 그리는 사피엔스의 후속작 느낌이 강합니다. 사피엔스를 요약하면 인지혁명, 농업혁명, 과학혁명을 통해 현 인류인 사피엔스가 지구의 중심이 된다는 내용입니다. 호모데우스에서는 현 21세기의 인류는 기아, 역병, 전쟁을 극복하고 불멸과 행복을 향해서 신의 영역을 넘보고 있다는 내용을 말합니다. 이전에는 신을 섬기면서 농사가 풍년이 되도록 빌던 하늘에 빌던 인간들이, 인본주의(인간의 존재를 중요시하고 인류사회의 존엄을 중시)가 스며들면서 '신'이 중심이었던 세상이 '인간'인 '나'가 ..

독서 2022.07.03