본문 바로가기

Server/Java, Spring21

[Spring] SpringBoot 실행 후 바로 종료될 때 문제 Spring Initializr에서 생성 후 프로젝트 실행 시 서버가 구동되지 않고 바로 종료되었습니다. 원인 및 해결방법 build.gradle에 아래 의존성을 추가 후 refresh 하시면 됩니다. implementation 'org.springframework.boot:spring-boot-starter-web' InteliJ의 Gradle탭에서 해당 의존성을 살펴보면, Spring Boot에서 사용하는 내장 톰캣이 spring-boot-starter-web과 연관돼 있는 것을 보실 수 있습니다. 해당 라이브러리가 없어서 발생하는 문제이고, web 모듈을 받아주면 됩니다. 가끔 프로젝트를 의존성 없이 생성한 후 실행이 안돼서 무지성으로 검색부터 할 때가 있어 기록합니다. 2022. 3. 6.
[Java] Stack Class API 문서와 소스를 통해 스택 자료구조가 작성되어 있는 Stack 클래스를 분석해보도록 하겠습니다. Java Platform SE 8 docs.oracle.com Stack 클래스의 구조 Stack 클래스란? public class Stack extends Vector 스택 클래스는 객체의 LIFO 스택을 표현합니다. 스택 클래스는 백터를 스택으로 취급할 수 있게 해주는 다섯 가지 작업로 백터 클래스를 확장합니다. push와 pop 작업이 제공되고, 스택의 상단 요소를 찾기 위한 메서드와, 스택이 비어있는지 확인할 수 있는 메서드, 그리고 요소를 찾을 수 있는 메서드와 상단으로부터 얼마나 떨어져 있는지 찾기 위한 메서드가 제공됩니다. 더 완전하고, 일관된 LIFO 스택 작업의 set은 Deque 인터페.. 2022. 2. 16.
[Spring Boot] Exception: Required request body is missing 문제 ajax 통신으로 데이터 전송 시 서버측에서 해당 오류 발생 원인 put 메서드 이용 시 json 형식으로 요청하여야 하는데, 사용하는 라이브러리에서 text데이터를 보내고 있었음. 해결방법 JSON.stringify(item) json형식으로 변환하여 전송하여 해결함. 참고 Spring post method "Required request body is missing" @PostMapping(path="/login") public ResponseEntity loginUser(@RequestBody Map userData) throws Exception { return ResponseEntity.ok(userService.login(userData))... stackoverflow.com 2022. 1. 24.
[Java] JVM 메모리 구조 먼저, JVM이란 - JVM은 Java Virtual Machine의 약자로 자바 가상머신을 의미합니다. - 우리가 작성한 자바 코드는 컴파일러를 통해 자바 바이트 코드 즉, class 확장자 파일로 컴파일됩니다. - 해당 파일을 JVM위에서 동작시킴으로서 JVM만 설치되어 있다면 운영체제에 구애받지 않고 프로그램을 동작할 수 있습니다. 위 그림의 3번인 Runtime Data Area가 알아보고자 하는 JVM의 메모리 영역입니다. 운영체제 위에서 JVM이 실행되면서 할당받는 메모리 영역입니다. 5개의 영역이 존재합니다. 메소드, 힙, 스택 영역에 대해서만 알아보도록 하겠습니다. 메소드 영역(Method Area) 스택 영역(Stack Area) / 힙 영역(Heap Area) Reference 마로의 .. 2022. 1. 1.
[Java] Comparator Java에서의 정렬 자바에서 데이터를 정렬해야 할 때, 기본적인 정렬은 java.util 패키지에 정의되어 있는 Arrays와 Collections의 sort메소드를 사용합니다. int[] randomNum = {3, 4, 6, 3, 2}; Arrays.sort(randomNum); String[] fruits = {"apple", "banana", "kiwi"}; Arrays.sort(fruits); ArrayList alphabetList = new ArrayList(Arrays.asList("C", "A", "B", "a")); Collections.sort(alphabetList); 위의 예시대로 작성한다면, 기본 정렬인 오름차순으로 정렬하게 됩니다. 기본적으로 제공되는 기능들로 오름차순, 내림차.. 2021. 12. 24.
[Spring] @RequestBody로 받아온 데이터가 null일 때 상황 API를 호출하여 컨트롤러에서 @RequestBody 어노테이션을 사용하여 데이터를 받아왔습니다. 하나의 데이터를 제외한 나머지는 정상적으로 받아오고, 특정 값만 받아오지 못하여 문제가 되었습니다. 해결책 "Spring mvc uses jackson to parse json by default. It is guessed whether the field name of the entity class is changed when the field name is converted to json." Spring은 json파싱을 위해 기본값으로 jackson 라이브러리를 사용한다고 합니다. 필드명을 아래와 같은 형태로 작성하게 되면 IDE혹은 Lombok에서 자동생성해주는 Getter/Setter의 메소드명은.. 2021. 11. 18.
[Spring] Spring Batch 최근 몇 개월간 배치 프로그램 개발을 맡아서 진행하였는데, 반복적인 업무를 자동화 할 수 있다는 점에서 굉장히 흥미로웠습니다. 아직은 경험해 본 범위 내에서만 활용할 줄 알기때문에, 다른 사람들과 기업에서는 어떻게 활용하고 있는지, 추가적인 기능은 없는지 찾아보며 Spring Batch에 관하여 정리해보려 합니다. Spring Batch란 A lightweight, comprehensive batch framework designed to enable the development of robust batch applications vital for the daily operations of enterprise systems. 엔터프라이즈 시스템의 운영에 필수적인 강력한 배치 애플리케이션을 개발할 수 있도.. 2021. 11. 6.
[Java] Stream 스트림이란? - 여러 자료에 대한 처리 기능을 미리 구현해 놓은 클래스 스트림 연산 - 종류: 중간 연산 / 최종 연산 - 중간 연산: 자료를 거르거나 변경하여 또 다른 자료를 내부적으로 생성 - 최종 연산: 중간 연산에서 생성된 내부 자료를 소모하며 연산을 수행 - 따라서 최종 연산은 마지막에 한 번만 호출됨 - 최종 연산이 호출되어야만 중간 연산의 결과가 만들어짐 자주 사용되는 중간 연산(filter, map) - filter( ): 조건을 넣고 그 조건에 맞는 참인 경우만 추출하는 경우에 사용 public static void main(String[] args) { int[] array = {1,2,3,4,5}; // 3 이상의 값만 출력 Arrays.stream(array).filter(i -> .. 2021. 10. 5.
[Log4j2] Log4j2- PatternLayout 목적 - Log4j2에서의 PatternLayout의 속성에 관하여 숙지 정의 - 패턴 문자열로 구성 가능한 유연한 레이아웃. (A flexible layout configurable with pattern string.) 사용법 - 각 변환 지정자는 (%) 기호로 시작하고, 뒤에 선택적 형식 지정자와 변환 문자가 옴 (Each conversion specifier starts with a percent sign (%) and is followed by optional format modifiers and a conversion character. ) 속성(기본적으로 사용되는 속성만 기록함) - p: 로깅이벤트의 우선순위를 출력하는데 사용됨 (Used to output the priority of the.. 2021. 10. 5.