Skills/Java & Spring

Skills/Java & Spring

Java의 Reflection과 JPA 엔티티의 기본 생성자 protected를 권장하는 이유

Reflection? java에서는 reflection이라는 api를 제공한다. reflection은 구체적인 클래스 타입을 알지 못해도 클래스의 메서드나, 타입, 변수들에 접근할 수 있도록 해주는 api이다 대표적인 적용 예시로는 1) JPA에서 객체 조회시 데이터가 들어가는 것 2) @RequestBody 사용 시 DTO 객체에 데이터가 들어가는 것 3) 테스트 케이스 작성시 private 메서드를 테스트할 때 등이 있다. 어떻게 가능한걸까? 기본적으로 객체에 데이터를 넣기 위해서는 일련의 과정(new, setter 등)이 필요하고, 접근 제어자에 따라 접근이 불가능한 것이 맞다. 하지만 reflection이 적용된다면 이러한 과정이 필요하지 않고 private 메서드의 접근도 가능하다. 바로 ref..

Skills/Java & Spring

[Java] Long과 long의 차이

우테캠 미션 진행당시 도메인 객체의 id 값에 대해 Long을 사용하는 것을 보면서 왜 long이 아닌 Long을 사용하지? Long과 long의 차이는 뭐지? 라는 의문이 생겼다. Long과 long의 차이와 어떤 경우에 사용하면 좋은지에 대해 알아보려고 한다. long은 원시 타입(Primitive Type), Long은 참조 타입(Reference Type)이다 원시 타입은 정수, 실수, 문자, 논리 리터럴 등 실제 메모리에 데이터 값을 직접 저장하는 타입으로서 boolean, char, byte, short, int, long, float, double를 말한다. 참조 타입은 객체의 주소를 저장하는 타입으로 메모리 주소 값을 통해 객체를 참조하는 타입으로서 원시 타입을 제외한 문자열, 배열, en..

Skills/Java & Spring

java 버전 변경하여 jdk 설치 및 적용하기

자바 jdk가 이미 설치되어 있고 버전을 변경하려 할 때 적용하는 방법 자바 jdk 버전별로 다운받는 링크 블로그(감사합니다!) https://nhj12311.tistory.com/37 자바 11 설치 - https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html 자바 버전 변경하기 1) sudo vi ~/.bash_profile 입력하고 비번 입력 2) JAVA_HOME 경로 변경 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.12.jdk/Contents/Home 3) source ~/.bash_profile 입력 4) java -version 해서 변경된 버전 확..

Skills/Java & Spring

[Java] EXCEL 다운로드 addMergedRegion 속도 이슈 발생시 addMergedRegionUnsafe를 사용하자

사이트 개발을 진행하다 보면 가끔 한번씩 등장하게 되는 기능이 바로 "엑셀 다운로드" 기능이다. 엑셀 다운로드의 셀 병합 기능과 관련된 속도 이슈와 이를 개선했던 경험을 써보려고 한다. EXCEL 라이브러리? 엑셀 업로드/다운로드 기능을 자바에서 사용하기 위해서는 대부분 POI 라이브러리를 사용하게 된다. POI에서 제공하는 엑셀 라이브러리는 대표적으로 HSSF, XSSF, SXSSF가 있다(매번 발음하기 너무 어렵다) 사용방법이나 예제의 경우 인터넷에 많으니 구글 검색을 추천.. 속도 이슈 발생기 기존에 회사 설문조사 결과를 엑셀로 다운로드 할 수 있는 기능이 있었는데 응답자 정보를 추가로 넣어 출력해주는 기능의 작업을 진행했었다. 그런데 기능 개선 이후 약 10달이 지난 시점, 설문 결과 다운로드를 ..

Skills/Java & Spring

스프링 부트 테스트

이 글은 '처음 배우는 스프링 부트2' (김영재 저)' 책 내용을 정리한 글입니다. 스프링 부트에서는 각종 테스트를 위한 어노테이션 기반 기능을 제공 @SpringBootTest 통합 테스트를 제공하는 기본적인 스프링 부트 테스트 어노테이션 애플리케이션이 실행될 때의 설정을 임의로 바꾸어 테스트 진행 가능하며, 여러 단위 테스트를 하나의 통합된 테스트로 수행할 때 적합 장점 : 실제 구동되는 애플리케이션과 똑같이 애플리케이션 컨텍스트를 로드하여 테스트하므로 하고 싶은 테스트를 모두 수행 가능 단점 : 애플리케이션에 설정된 빈을 모두 로드하기 때문에 규모가 클수록 느려짐 @SpringBootTest 어노테이션을 사용하려면 @RunWith(SpringRunner.class)를 붙여서 사용해야 함 @RunWi..

프리미99
'Skills/Java & Spring' 카테고리의 글 목록