JAVA
-
model mapping 라이브러리 MapstructJAVA 2021. 7. 8. 23:02
Mapstruct란? 모델간 맵핑을 쉽게 해주는 라이브러이다 ex) entity dto -컴파일 시점에 맵핑클래스를 생성함(그래서 매우 좋음 바로바로 확인가능) -ModelMapper 보다 맵핑 성능이 훨씬 좋음 1. 라이브러리 추가 mapstruct만 추가해주면된다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.cloud:spring-cloud-starter-netflix-hystrix' implementatio..
-
AssertJ 사용하기JAVA 2020. 9. 15. 23:09
AssrtJ란? - 테스트코드 작성을 쉽게 도와주는 라이브러리 - 메소드 체이닝 지원 준비 java8 이상 -> 3.x 버전 java7 이하 -> 2.x버전 maven org.assertj assertj-core 3.11.1 test gradle testCompile("org.assertj:assertj-core:3.11.1") 사용방법 static import해놓으면 훨씬 더 깔끔하게 사용가능하다 import static org.assertj.core.api.Assertions.assertThat; 값이 같은지 검증하기(주소값 아님) - isEqualTo() @Test public void eq(){ String name ="최민"; assertThat(name).isEqualTo("최민"); // s..
-
[JAVA] String StringBuffer StringBuilderJAVA 2019. 8. 26. 22:11
요약 : 성능에 신경을써야한다면, 많은 문자열을 연결할땐 StringBuilder를 사용하자 (단일스레드에서만 ^^) String StringBuilder StringBuffer 객체상태 불변객체 가변객체 가변객체 멀티 스레드에서동기화 지원여부 X O 속도 (빠른순) 3등 1등 2등 - String은 문자열 연결 연산자로 문자열 n개를 잇는 시간은 n^2에 비례한다.- String은 불변객체라서 두문자열을 연결할 경우 양쪽의 내용을 모두 복사해야해서 성능저하가 많이 일어난다.- StringBuilder, StringBuffer는 기존의 버퍼크기를 늘리며 유연하게 동작함. String은 왜 불변인가?- 클래스안에 들어가보면 알겠지만, 아래와 같이 final로 선언되어 있기 때문이다.private final..
-
[JAVA] JSON 다루기 정리 (JACKSON - ObjectMapper)JAVA 2018. 11. 25. 23:22
API를 개발하다보면 JSON을 많이 다루게되어 한번 정리한다. JAVA에서 JSON을 다룰때 주로 사용하는 클래스는 주로 GSON과 JACKSON일 것이다. GSON JACKSON 구글에서 제공한 JSON 자바 라이브러리 JSON 자바 라이브러리 성능 (루프안에서 JSON인스턴스 생성시) 우수 10만번 부터 차이가 눈에 띄게 벌어지고 100만 부터 매우매우 벌어짐 성능 (JSON객체 한번만 생성해서 사용 할 경우) 우수 10만번 부터 차이가 눈에 띄게 벌어지고100만번 부터 매우매우 벌어짐 기타 spring boot에서 기본으로 포함됨 @Bean에 ObjectMapper등록해 놓고 싱글톤으로 주입 받아서 쓰기 때문에 성능도 우수 위와 같은 이유로 주로 나는 JACKSON을 많이 사용한다.(회사에서도 결..
-
[JAVA] 함수형 인터페이스 PredicateJAVA 2018. 11. 12. 23:56
Predicate (함수형 인터페이스) java.util.function패키지에 자주쓰이는 형식의 메서드를 함수형 인터페이스로 미리 정해 놓았다.매번 새로운 함수형 인터페이스를 정의하지말고 이 패키지에서 꺼내다 쓰면된다. 조건식을 표현하는데 사용된다.매개변수는 1개 그리고 반환타입은 boolean 형식: Predicate메서드: T ▶ boolean test( T. t) ▶ boolean 123456789101112131415161718192021222324252627282930package test_java; import java.io.IOException;import java.util.function.Predicate; public class Main { public static void main(S..
-
[JAVA] 람다식과 함수형 인터페이스JAVA 2018. 11. 11. 23:00
람다식은 익명클래스의 객체와 동등하다. 1타입 변수 = (int a, int b) -> a>b?a:b;cs 여기서 람다식의 참조변수의 타입은 뭘로해야할까? 참조형 이니까 클래스 or 인터페이스로 타입을 정 할 수 있을 것이다. 여기서는 함수형 인터페이스로 사용 하였다123456789package test_java; @FunctionalInterfacepublic interface Member { public int getMemberAge(int age); } Colored by Color Scriptercs@FunctionalInterface를 붙이면 컴파일러가 함수형 인터페이스를 올바르게 정의하였는지 확인해 줌으로 꼭 붙이는게 좋다.주의사항으로는 함수형 인터페이스에는 오직 1개의 추상메소드만 있어야 한..