728x90

자바 120

[Java] Bean을 생성하지 못한다고 자꾸 나올때...Message를 읽지 못할때

공부를 다시 시작한 요즘. 예전에 작성했던 코드에 메세지 국제화랑 Utils 등을 이것저것 추가하기로했다. 그런데 아무런 이상이 없다고 생각했는데, 자꾸 bean을 제대로 읽지 못하는 에러가 나타났음. 정확히 말하면 messageSource를 읽지 못했는데, 와 결론만 말하면 결국 알파벳 하나의 차이였다. message관련 설정을 이렇게 해줬는데 결국은 messages/message 이 부분을 제대로 보지 못했음. message가 아니라 messages.properties로 되어있었으니 제대로 읽지 못하는것이였다. 내 눈에만 안보였던 s... 오랜만에 삽질 한번 제대로 했네. 물론 이 과정에서 messageSourced 및 Utils 등을 깊게 봐보면서 공부가 되긴했지만, 그래도 이런 경우는 좀 억울하긴..

오류 모음집 2023.10.23

[Java]Virtual Thread란 ?

2023년 9월에 릴리즈 예정인 Java 21은 Java 8 이후 세번째 LTS 버전 입니다. LTS는 Long Term Support 의 약자인데 보통 장기 지원 버전. 즉, 일반경우보다 장기간에 걸쳐 지원하도록 고안된 버전을 의미합니다. ※ 현재까지 출시된 LTS은 Java 8, 11, 17 이다. LTS를 사용하게 되면, 사용하는 소프트웨어의 버전 업그레이드에 대한 부담을 줄이고 안정성을 높힐 수 있게 되죠. 새롭게 출시되는 Java 21에는 가상 스레드(Virtual Thread) 라는 기능이 추가 될 예정 입니다. 이 기능을 한번 성능 테스트 해보겠습니다. 해당 글은 https://findstar.pe.kr/2023/04/17/java-virtual-threads-1/ Virtual Thread..

JAVA 2023.05.12

[Java] Stream의 종류

Input이란 메모리로 들어오는 데이터의 흐름. Output은 메모리에서 빠져나가는 데이터를 의미. 메모리는 데이터를 byte 단위로 처리하는데, 이 byte의 흐름을 Stream이라고 한다. Java의 Stream은 여러가지가 있는데, 한 번 파악해보자 InputStream System.in의 경우 많이 봐온거 같다. 이것은 System 클래스의 InputStream 타입의 static final 상수이다. InputStream은 입력 받을 수 있는 객체로 1byte 단위를 처리하는 스트림이다. 그렇기 때문에 영문자, 숫자, 특수문자 등이 처리가 가능하지만, 기본적으로 2byte부터 시작하는 한글의 경우에는 처리가 불가능하다. ex 1) 1. InputStream 타입의 roma에 System.in의 ..

JAVA 2022.06.28

[Java] Integer.valueif 와 parseInt의 차이점

자바를 사용하다보면 문자열 형태로 표현된 정수를 정수 타입 값으로 변환해야할 경우가 있다. 이 경우 valueOf() 메서드와 parseInt() 메서드를 사용하게 된다. int number1 = Integer.valueOf("100"); System.out.println("number1 = " + number1); int number2 = Integer.parseInt("100"); System.out.println("number2 = " + number2); "100"이라는 문자열을 정수형 값으로 변경하는 방법은 위 코드에서 본 것처럼 Integer.valueOf() 메서드와 Integer.parseInt() 메서드가 있습니다. 이 프로그램을 실행시키면 다음과 같이 동일한 결과를 얻을 수 있습니다. ..

JAVA 2022.04.15

Spring Data & JPA & Hibernate 차이점

Spring Data JPA Spring Data JPA는 Spring Framework에서 제공하는 모듈 중 하나로, 개발자가 JPA를 좀 더 쉽고 편하게 사용 할 수 있도록 도와준다. 특징을 잠깐 살펴보자면, Hibernate와 같은 구현체들을 좀 더 쉽게 사용할 수 있도록 추상화한 것. JPA를 한 단계 추상화시킨 Repository 인터페이스를 제공. 개발자가 Repository 인터페이스에 정해진 규칙대로 메소드를 입력하면, Spring이 알아서 해당 메소드 이름에 적합한 쿼리를 날리는 구현체를 만들어서 Bean으로 등록. Hibernate와 Spring Data JPA를 사용하는 데에는 사실 큰 차이가 없지만 Spring Data JPA가 권장되는 이유는 크게 두 가지. 구현체 교체의 용이성 ..

[Java]프로세스와 스레드의 차이

프로세스와 스레드에 대한 정의 프로세스 : 운영체제로부터 자원을 할당받은 작업의 단위. 스레드 : 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위. [프로그램 → 프로세스 → 스레드] 프로그램 → 프로세스 프로그램 : 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태. ☞ 메모리에 올라가 있지 않은 : 아직 운영체제가 프로그램에게 독립적인 메모리 공간을 할당해주지 않았다는 뜻. 모든 프로그램은 운영체제가 실행되기 위한 메모리 공간을 할당해 줘야 실행될 수 있다. ☞ 정직인 상태 : 정적이라는 단어 그대로, 움직이지 않는 상태라는 뜻. 한 마디로 아직 실행되지 않고 가만히 있다는 뜻. 즉, 프로그램이라는 단어는 아직 실행되지 않은 파일 그 자체를 가리키는말이다. 윈도우의 *..

JAVA 2022.04.12

[Java] 디스패치 서블릿 DispatcherServlet이란?

Dispatcher-Servlet(디스패처 서블릿) 이란? 디스패처 서블릿의 dispatch는 "보내다"라는 뜻을 가지고 있다. 그렇기 때문에 Dispatcher-Servlet은 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller)라고 정의할 수 있다. 이 과정을 이해하기전에 앞서 클라이언트로부터 어떠한 요청이 들어오게되면 톰캣과 같은 서블릿 컨테이너가 요청을 받게 된다. 그리고 이 모든 요청을 프론트 컨트롤러인 디스패치 서블릿이 가장 먼저 받게 된다. 그러면 디스패치 서블릿은 공통적인 작업을 먼저 처리한 후에 해당 요청을 처리해야하는 컨트롤러를 찾아서 작업을 위임하게 된다. 여기서 프론트 컨트롤러는 주로 서블릿 컨테이너의 ..

JAVA 2022.04.11

함수형 프로그래밍의 목적

프로그래밍 패러다임(Programming Paradigm) 프로그래밍 패러다임(Programming Paradigm)은 프로그래머에게 프로그래밍의 관점을 갖게 하고 코드를 어떻게 작성할 지 결정하는 역할을 한다. 새로운 프로그래밍 패러다임을 통해서는 새로운 방식으로 생각하는 법을 배우게 되고, 이를 바탕으로 코드를 작성하게 된다. 최근의 프로그래밍 패러다임은 크게 아래와 같이 구분할 수 있다. 명령형 프로그래밍: 무엇(What)을 할 것인지 나타내기보다 어떻게(How) 할 건지를 설명하는 방식 절차지향 프로그래밍: 수행되어야 할 순차적인 처리 과정을 포함하는 방식 (C, C++) 객체지향 프로그래밍: 객체들의 집합으로 프로그램의 상호작용을 표현 (C++, Java, C#) 선언형 프로그래밍: 어떻게 할건..

[Java] 함수형 인터페이스란?

함수형 인터페이스(Functional Interface) 란? 자바에서는 람다식을 통해 순수함수를 선언 할 수 있게 되었지만, 자바는 기본적으로 객체지향 언이이기 때문에 순수함수와 일반함수를 다르게 취급하고 있다. 이를 구분하기위해서 자바에서는 함수형 인터페이스라는것이 나오게 되었다. 함수형 인터페이스란 함수를 1급 객체처럼 다룰 수 있게 해주는 어노테이션으로, 인터페이스에 선언하여 단 하나의 추상 메소드만을 갖도록 제한하는 역할을 한다. 함수형 인터페이스를 사용하는 이유는 Java의 람다식이 함수형 인터페이스를 반환하기 때문이다. 예를 들어 우리가 두 값 중 큰 값을 구하는 익명 함수를 개발하였다고 하자. 그러면 우리는 지금까지 다음과 같이 개발을 하였을 것이다. public class Lambda {..

JAVA 2022.04.09
728x90