java 30

개발중 발생했던 @Autowired 관련 이슈 정리

여태까지 @Autowired 어노테이션은 의존성을 주입해주는 기능을 하는것으로 알고 있었는데, 최근 백엔드쪽 작업을 하다가 보니 A라는 클래스에서 B라는 클래스 내의 메소드의 기능을 사용하는 부분을 구현해야 했는데, 왜인지 모를 NullpointerException이 발생했었다, 대략 코드는 다음과 같이 작성했었는데, ※ Spring 의존성 주입(Dependency Injection) : 타 객체를 Spring bean을 통해 사용할 수 있게 해주는 것 (필자의 방식대로 한 줄로 정리한 내용이기때문에 그냥 그렇구나 하고 참고만 하기를 권장) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 @Service @Transactional publi..

SPRING FRAMEWORK 2021.01.07

String 배열을 다른자료형 배열로 변경하는 방법

오늘은 String값이 저장되어있는 배열을 Long, Integer등의 자료형으로 변경하는 방법에 대해서 정리하려고 한다. 알고리즘 문제를 풀 때 split을 자주 사용한다면 한번쯤은 고민해봤을 문제일 것 같다. 코드로 살펴보면 다음과 같다. 1234567891011121314151617181920212223242526import java.io.*;import java.util.Arrays; public class Main { public static void main(String[] args) throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String[] value = read..

JAVA 2020.12.31

JAVA System.in에서의 EOF(End of File) 컨트롤

저번 글에서 BufferdReader와 Scaner에 대해서 정리했었는데, 알고리즘 문제풀이에서 주로 사용하기 때문에 정리했었다. 그런데 알고리즘 문제 풀이중에서 종종 input종료 조건에 대한 지문이 없는경우가 있는데, 이 글을 쓰기 전 까진 그냥 무한루프를 돌리는 건가? 라고 생각하고 디버깅을 시도했는데, 결과는 당연히 런타임에러였다. 이후 문제를 자세히 읽어보니 EOF라는 키워드가 있어서 EOF에 대해서 찾아보고 정리하려고 한다. 먼저 EOF는 End Of File 약어로 데이터로부터 더이상 읽을 수 있는 소스가 없다라는 의미로 보통 반복문의 종료시점을 설정하기 위해서 사용하는 것 같다. 이 글에서는 BufferdReader와 Scanner의 while문에서의 EOF만 정리하려고 한다. 코드는 다음..

JAVA 2020.12.23

JAVA 입력과 출력(Scanner, BufferedReader..)

알고리즘 문제를 풀다보면 입력을 받아서 정답을 출력하게 작성해야하는데 그때 사용할 수 있는 Scanner와 BufferedReader를 이용한 입출력을 정리해보려고 한다. 먼저 속도적인 면으로는 BufferedReader가 Scaaner에 비해 훨씬 빠른데, 보통 JAVA를 처음 접할떄 입력은 Scanner로 배우기 때문에 조금은 생소할수도 있다. 각설하고 코드로 확인해 보면 다음과 같이 사용할 수 있다. 1234567891011121314151617181920212223242526272829303132333435363738import java.io.*;import java.util.Scanner; public class Main { public static void main(String[] args) ..

JAVA 2020.12.17

JAVA에서 리스트안의 원소를 중복제거하는 방법?

개발에서 중복되는 데이터를 제거하는 작업은 빈번하게 일어나게 되는데, 그때 어떤 방법을 이용해서 중복을 제거할 것 인가가 항상 고민이였다, 그래서 활용가능한 방법들을 간단하게나마 정리하려고 한다. 먼저 리스트안의 중복을 제거하는 방법은 몇 가지가 있는 것 같은데, 대표적으로 아래와 같은 방법이 있는 것 같다. 1. for문을 이용해 리스트를 순회하며 제거(contains를 이용 or 변수를 이용) 2. Set자료형을 이용하여 중복을 제거 3. Stream의 distinct를 이용하는 방법 이외에 다른 방법이 더 있을 수도 있겠지만, 당장 생각나는 방법만 정리하려고 한다. 백문이불여일견이라고, 코드를 통해 정리 하면 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ..

JAVA 2020.11.04

javascript의 Window.Storage를 사용해보자.

오늘은 개발하던도중 자바스크립트에 아주 유용한 기능 중 하나인 localStorage가 있어서 정리해보려고 한다. 최근에 사용자의 편의성을 위해서 특정작업 후에도 스크롤위치를 저장하기 위해서 localStorage를 사용해봤는데, 아주 유용한 것 같다. 일단 사용법이 간단하기도 하고, 브라우저 호환성도 괜찮은 것 같다. (IE 8도 지원하니까 뭐..) 일단 사용법 부터 설명하면 다음과 같다. (정말 별게없다) 1234567891011121314151617181920212223// 로컬스토리지 사용법(브라우저가 닫혀도 유지)function test() { localStorage.setItem('key', 'value'); // 키 : 밸류 값으로 저장한다 console.log(localStorage.get..

JAVASCRIPT 2020.10.29

Spring JPA에서 @Query를 사용하는 방법.

Spirng JPA는 EntityRepository를 이용해 CRUD(생성,조회,수정,삭제)를 쉽게 할 수 있게 지원하지만, 떄떄로 개발을 하다보면 서로 연관관계가 없는 테이블을 조인을 통해 핸들링 해야할일이 꽤나 빈번하게 있다. 위와 같은 상황이 발생할 때 고민해볼만한 방법은 QueryDsl를 이용하거나(이 경우는 DTO가 필요) @Query 어노테션을 이용해 sql문을 작성하는 방법이 있는데, 오늘은 @Query 어노테이션을 이용하는 방법을 아주 간단하게 정리하려고 한다. 딱히 어려운 부분은 없을 것 같아서 코드로 정리하자면 다음과 같다. 12345678910// import 생략// QuerydslPredicateExecutor은 QueryDsl을 사용하기 위해 상속해 둠public interfac..

SPRING FRAMEWORK 2020.09.22

JAVA에서 ..parameter???? (가변인자)

최근 개발을 하다가 stack overflow 글을 보다가 특정 메소드에서 String ...data라는 방법으로 파라미터를 전달하는 코드를 보게 되었는데, 여태까지 그렇게 파라미터를 전달하는 것은 처음 봤기때문에 한번 공부도 할겸, 정리도 할겸해서 정리해보려고 한다. 먼저 가변인자는 JAVA 1.5이상 버전부터 사용가능하다고 하고, (데이터타입 ...변수명)으로 작성함으로 써 가변인자를 사용할 수 있는데, 가변인자를 통해 변수를 전달하면 컴파일러는 내부적으로 배열을 생성한다고 한다. 12345678910111213public class Test { public static void main(String [] args) { new Test().sum(1,5,8,99); } public void sum(i..

JAVA 2020.08.25

스프링 부트(Spring boot) + 그레들(Gradle) 개발 환경설정

오늘은 스프링부트와 그레들을 이용하는 개발환경을 설정하는 글을 정리하려고 한다. 먼저 환경은 스프링 사이트에서 다운받을 수 있는 Spring Tools를 이용해서 설정할 것이다. (이클립스를 이용해도 상관없음) 먼저 스프링 사이트에 접속해서 스프링 툴 4를 OS에 맞는 것을 설치해준다. (나의 경우 window) Spring Tools 4 is the next generation of Spring tooling Largely rebuilt from scratch, Spring Tools 4 provides world-class support for developing Spring-based enterprise applications, whether you prefer Eclipse, Visual Stud..

SPRING FRAMEWORK 2020.07.06

Rest API 비동기 시점 제어 (async, await) 및 value return

오늘은 블로그 비교적 최근에 추가된 비동기 패턴제어인 async과 await에 대해서 정리하려고 한다. 들어가기 앞서 async와 await은 최신 브라우저에서만 지원하기 떄문에 이점은 고려해서 사용해야 할 것 같다. (익스플로러를 크로스브라우징 대상에 포함한다면 어쩔수없이 콜백함수를 써야하지만..) 먼저 나는 async과 await을 사용한 상황은 금액에 대한 계산이 필요했는데, 금액을 가져오는 API가 여러 개였기 떄문에 정확한 금액 계산을 위해 데이터들이 한번에 들어 와야하는 상황이였다. 따라서 전통적인 콜백함수를 사용하기보단 async&await을 써보았다. (사내에서 개발하는 프로그램은 크롬, 엣지만 지원하고 있다.) 먼저 나는 document문서에서 설명해주는 것과 매우 흡사하게 작성했고, a..

JAVASCRIPT 2020.06.26