JAVA 24

ModelMapper, 객체간 매핑 라이브러리

ModelMapper는 Java 언어를 기반으로 하는 객체 간 매핑 라이브러리입니다. 이 라이브러리는 객체 간에 속성을 매핑하는 데 사용되며, 주로 DTO(Data Transfer Object)나 엔터티(Entity) 등의 다른 모델 간의 데이터 전환에 유용합니다. ModelMapper를 사용하면 객체 간의 복잡한 매핑 작업을 간소화하고, 자동으로 일치하는 속성을 찾아 매핑할 수 있습니다. 반복적이고 수동적인 매핑 코드를 작성하지 않고도 객체 간의 데이터를 쉽게 전환할 수 있게 해줍니다. 간단한 예를 들어보면, 클래스 A와 클래스 B가 있고, 이 두 클래스의 속성 이름과 타입이 일치한다고 가정해봅시다. ModelMapper를 사용하면 다음과 같이 사용할 수 있습니다 ModelMapper modelMapp..

JAVA 2023.11.22

[JAVA 기초] java.util.function 패키지(Runnable, Supplier<T>, Consumer<T>, Function<T,R>, Predicate<T>)

java.util.function 패키지(1/3) 자주 사용되는 함수형 인터페이스 예제 //Supplier f = () -> (int) (Math.random()*100) + 1; //Consumer f = i -> System.out.print(i + ", "); //Predicate f = i -> i%2 == 0; //Function f = i -> i/10*10; java.util.function 패키지(2/3) 두 개의 매개변수를 받는 함수형 인터페이스 만약 세 개 이상의 매개변수를 받는 인터페이스를 만들고 싶으면 아래와 같이 인터페이스를 정의하여 사용하면 된다. @FuntionalInterface interface TriFunction { R apply(T t, U u, V v); } java..

JAVA 2023.11.07

[JAVA 기초] 함수형 인터페이스와 람다식(메서드를 일급객체로 사용하는 원리)

람다식과 함수형인터페이스가 도입되기 전에는 함수형 언어를 흉내내기 위해, 익명 내부 클래스를 활용해서 익명함수 기능을 모방하는 방법을 활용했다. 그러나 JDK1.8부터 함수형 언어를 지원하기 위해, 람다식과 람다식을 다루기 위한 함수형 인터페이스가 도입 되었고 이때부터 자바는 함수형 언어를 포함하는 객체지향(OOP) 언어가 되었다. 먼저 함수와 메서드의 차이를 알아보자. 함수 vs 메서드 메서드는 클래스에 종속적, 함수는 독립적 (근본적으로 동일, 메서드는 OOP 개념 용어) 메서드를 일급 객체와 같이 클래스에 제한되지 않고 자유롭게 사용할 수 있도록, Java 8에서 '람다식'과 '함수형 인터페이스'를 도입하였다. '일급 객체' 란 사용할 때 다른 요소들과 아무런 차별이 없다는 것을 뜻하며, 아래 3가..

JAVA 2023.10.30

@DependsOn - 빈의 초기화 순서를 지정

@DependsOn Spring Framework에서 빈(Bean)의 초기화 순서를 지정하는 데 사용 일반적으로 Spring IoC 컨테이너는 빈들을 생성하고, 초기화를 진행하면서 빈 간에 순서를 정하지 않고 병렬적으로 진행 이때, 특정 빈이 다른 빈에 의존하면서 생성 및 초기화되어야 하는 경우, @DependsOn 어노테이션을 사용하면 특정 빈이 다른 빈의 생성 및 초기화가 끝난 후에 생성 및 초기화되도록 지정할 수 있음 @Configuration public class AppConfig { @Bean(name = "beanA") public BeanA beanA() { return new BeanA(); } @Bean(name = "beanB") @DependsOn("beanA") // beanA가 ..

JAVA 2023.04.20

[JAVA] 다형성, 참조변수의 형변환

다형성 '조상'타입 참조변수로 '자손'타입 객체를 다루는 것 조상클래스 참조변수 = new 자손클래스(); TV t = new SmartTV 자손클래스 참조변수 = new 조상클래스(); ---> 자손타입이 조상 객체를 다룰 수 없음 (why? 기능을 다룰 수 있는데 객체에 기능이 없어서 사용을 못하는 것은 안됨) ▪︎ 참조변수가 조상타입일 때와 자손타입일 때의 차이? - 참조변수가 사용할 수 있는 객체의 멤버 갯수 차이

JAVA 2021.12.21

[JAVA] 변수 초기화

■ 변수의 선언 위치 별 초기화 클래스 영역 : 자동 초기화 메서드 영역 : 직접 초기화 필요 * 클래스영역에는 변수/메서드 선언만 가능(실행문 불가) 문제 : 아래 선언된 변수의 이름과 정상인 이유, 에러인 이유를 설명하시오. 정답 (ㄱ) 클래스 변수, 정상 (ㄴ) 클래스 변수, 정상(자동초기화 됨) (1) 인스턴스 변수, 정상 (2) 인스턴스 변수, 정상(자동초기화 됨) (3) 로컬변수, 정상(직접 초기화 함) (4) 로컬변수, 호출하지 않으면 에러는 아니지만 호출되어 실행되면 에러로 확인됨 (로컬변수라서 직접 초기화 해줘야 하는데 클래스가 끝날때까지 값을 선언하지 않음) (5) 로컬변수, 에러, 상위 main 메서드 블록에서 선언한 a인데, 중복해서 선언을 함(타입 제거하면 에러 없음) (6) 로컬..

JAVA 2021.12.18

[JAVA] 변수의 사용 범위

■ 변수의 선언 위치 클래스 영역 메서드 영역 * 클래스영역에는 변수/메서드 선언만 가능(실행문 불가) ■ 선언위치에 따른 변수 종류 ■ 지금 막 자바를 시작한 분들의 이해를 돕기위한 추가 설명 더보기 우리가 자바를 배울 때 가장 처음으로 보게되는 클래스의 모습이다. 아래 예시에서는 'Hwivelop3'이라는 '클래스 영역'과 'main' 이라는 이름의 '메서드 영역'으로 구분할 수 있다. 멋쟁휘개발자 여담 처음에 자바를 배울 때, 클래스가 뭔지, 메서드가 뭔지 전혀 구분하지 못했다. 진도를 따라가는 것만으로도 벅찼기 때문에 'public static void main(String[] args){ }'가 이런 문장을 가지고 있는 클래스인 줄 알았다.... 먼저 확인하면 좋을 내용 '변수의 초기화'(클릭)..

JAVA 2021.12.18