java8 Spring Rest Controller, Spring MVC와 비교 Spring에서 REST API는 @RestController 어노테이션을 사용하여 구현됩니다.@RestController는 @Controller와 @ResponseBody 어노테이션의 조합으로, 컨트롤러의 모든 메소드의 반환값이 HTTP 응답 본문으로 직접 반환되도록 합니다. 이를 통해 JSON이나 XML과 같은 형태로 데이터를 쉽게 주고 받을 수 있으며, HTTP 요청을 처리하는 핸들러 메서드는 @RequestMapping 또는 그와 어노테이션(@GetMapping, @PostMapping 등)을 사용하여 구체적 HTTP 메소드와 경로를 지정합니다. Spring 프레임워크는 RESTful 서비스의 인기가 높아지기 전, 주로 Spring MVC(Model-View-Controller)아키텍처를 사용하여.. 2024. 12. 2. 통합테스트, SpringBootTest 통합테스트란?통합테스트는 소프트웨어 개발의 여러 단계 중 하나로, 개별적으로 개발된 모듈들을 결합하여 전체 시스템이나 애플리케이션의 일부가 제대로 작동하는지 검증하는 테스트입니다. 이는 단위 테스트가 개별 컴포넌트 또는 클래스의 기능을 검증하는 반면, 통합테스트는 여러 컴포넌트나 시스템의 상호작용을 검증하여 오류를 찾아내고, 전체 시스템이 요구사항을 만족하는지 확인합니다.Spring Boot와 SpringBootTestSpring Boot는 Spring 기반의 애플리케이션을 쉽고 빠르게 구축할 수 있도록 도와주는 도구로, 다양한 'starter'종속성과 자동 구성(Auto-configuration) 기능을제공합니다. @SpringBootTest는 Spring Boot에서 제공하는 어노테이션 중 하나로, .. 2024. 12. 2. 자바 Garbage Collector 자바에서 Garbage Collector는 메모리 관리를 자동으로 수행하는 시스템으로 더 이상 사용되지 않는 객체를 자동으로 검출하고 메모리를 해제하는 역할을 합니다.1. 객체 식별가비지 컬렉터는 먼저 사용 중인 객체와 사용되지 않는 객체를 구분해야 합니다. 이 과정에서 도달 가능성 분석을 수행하여, 루트 집합에서부터 시작해 참조를 따라갈 수 있는 객체를 식별합니다. 루트 집합은 메소드 영역에 있는 클래스, 스택 영역의 지역 변수, 네이티브 스택의 JNI 참조 등에서 참조하는 개체들을 포함합니다. 참조할수 있는 경로가 있는 객체는 '도달 가능한 객체'로 분류되며, 그렇지 않은 객체는 가비지로 간주됩니다.2. 가비지 수집도달할 수 없는 객체들이 식별되면, 가비지 컬렉터는 이들 객체가 차지하고 있는 메모리를.. 2024. 12. 2. 자바 객체의 생명주기 자바에서 객체의 생명 주기는 크게 네 단계로 나눌 수 있습니다. 이러한 단계를 이해하는 것은 메모리 관리 및 효율적인 자바 프로그래밍에서 매우 중요합니다.1. 객체 생성객체의 생명주기는 new 키워드를 사용하여 객체가 생성되는 순간부터 시작됩니다. 이때 생성자가 호출되어 객체의 초기 상태가 설정됩니다 예를 들어, Person person = new Person(); 코드는 Person 타입의 새 객체를 메모리에 할당하고, Person 클래스의 생성자를 호출합니다. 2. 사용객체가 생성된 후, 해당 객체를 참조하는 변수를 통해 접근하고 객체의 메서드를 호출하거나 변수를 수정하는 등의 작업을 수행할 수 있습니다. 이 단계에서 객체는 활동적인 상태에 있으며, 어떤 작업을 수행하든 해당 객체가 메모리에 존재하는.. 2024. 12. 2. 유닛 테스트 도구 Junit, Vscode에서 사용하기 JunitJunit은 Java의 단위 테스트 도구 입니다. Junit을 사용하여 Systemout으로 번거롭게 디버깅하지 않아도 됩니다. 프로그램 테스트에 걸릴 시간도 관리할 수 있게 해주며 오픈 소스이며, 플러그인 형태로 Eclipse에 포함되어 있습니다. 이번 포스팅에선 Vscode를 사용하여 Junit을 사용하는 방법을 알아봐 보겠습니다.사용법Extensions에서 Extesnios pack for Java를 설치합니다.이 후 TestRunnser for Java 설치의존성 추가plugins { id 'java' id 'org.springframework.boot' version '3.1.5' id ' io.spring.dependency-management' version '1.1.0.. 2024. 11. 26. Java, 배열의 조작을 도와주는 Arrays Intro보통 자바에서 배열을 선언하면 아래와 같이 선언한다.int[] Arr;int[] arr1, arr2; 하지만 배열을 정렬하거나, 배열 내용을 문자열로 반환하거나 하는 경우엔 직접 구현해야할까?ArraysArrays를 활용하면 직접 구현할 필요없이 메소드를 활용하여 원하는 결과를 도출해 낼 수 있다. 아래는 Arrays의 주요 기능들이다.import java.util.Arrays;SortingArrays.sort(array); 정렬 함수는 배열의 요소들을 오름차순을 정렬합니다. 자바는 내부적으로 퀵 정렬과 병합 정렬을 변형한 형태를 사용하여 정렬을 수행하며, 이는 대부분의 경우 매우 효율적입니다.Searchingint index = Arrays.binarySearch(array, 4); 검색 함수.. 2024. 11. 22. JVM, 자바는 컴퓨터에서 어떻게 실행되는가 1. Java자바는 "한 번 작성하면 어디서나 실행된다(Write Once, Run Anywhere)"는 철학 아래 설계된 언어로, 다양한 플랫폼에서 자바 프로그램을 실행할 수 있게 해줍니다. 이를 가능하게 하는 핵심요소가 JVM입니다.2. 소스코드작성public class HelloWorld { public static void main(Stringp[] args){ System.out.println("Hello, World!"); }} 1) 왜 Java는 main 메서도를 Hellow world와 같은 클래스 안에 포함시키는가Java는 객체 지향 프로그래밍 언어이므로 모든 코드는 클래스 안에 있어야 합니다. 이 메소드가 포함된 클래스의 이름은 중요하지 않으나, Java프로그램을.. 2024. 11. 21. Lombok을 활용한 간편한 모델 선언 1. Lombok이란?Java 라이브러리로 반복되는 getter와 setter, toString 등의 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리입니다.2. Lombok 주의사항API 설명과 내부 동작을 어느정도 숙지해야합니다. 예를 들어 Lombok의 @Data 나 @ToString 으로 자동 생성되는 toString() 은 순환 참조 또는 무한 재귀 호출 문제로 인해 StackOverflowError가 발생할 수 있습니다.3. Lombok과 일반 Java 코드의 차이public class Model { private String id; private String name; private Long seq; public Model() {} public Model(Str.. 2024. 11. 21. 이전 1 다음