반응형

java 10

@Autowired vs @Inject vs @Resource

가장 많이 사용하는 @Autowired는 뭘까? 그와 비슷한 @Inject, @Resource는 무엇일까? 오늘 재직중인 회사에서 재미있는 여러가지 키워드를 들었습니다. 궁금한 건 못참으니 학습하여 정리해보겠습니다. 먼저 위에 3가지의 공통점은 의존 관계를 맺어주는 것을 말합니다. 해당 애노테이션을 사용한 후 클래스를 선언하면 작성한 클래스와 작성된 클래스는 의존 관계가 맺어지게 됩니다. @Component public class Load { @Autowired private SuperCar superCar; // superCar class DI @Inject private GoodCar goodCar; // GoodCar class DI } 다음으로 3가지의 차이점으로 아래의 표를 참조해주세요. @Au..

Study/spring 2021.02.18

[Optional] Java 유용한 Null 처리

Java 코드를 짜면서 가장 많이 발생하는 에러는 무엇일까?? 바로 NullPointException 입니다. 이 Exception을 최대한 줄일 수 있는 Optional에 대해서 정리하겠습니다. Java 8부터 Null처리로 Optional이 나왔다. 그러나 개발자들이 기대했던 것과 다르게 만들어져 말이 많았다.... NullPointException를 완벽하게 방어해낼 것이라는 예상과는 다르게 구멍이 있는 기능이다. Optional의 get()같은.. 그래서 주의사항이 26가지가 된다. 이 글에서는 주의사항에 다루기 전에 Optional이 무엇인지, 어떤 메소드가 있는지에 대해서 알아보겠습니다. Optional이란? T 타입의 객체를 Wrapper하는 Wrapper 클래스입니다. 코드를 작성하다보면 ..

Develop/java 2020.12.01

실전 자바 소프트웨어 개발 정리 - 3

모든 소스는 github에 올려두었습니다. 문서 관리 시스템 목표 문서 관리 기능 설계의 핵심은 상속 관계, 즉 어떻게 클래스를 상속하거나 인터페이스를 구현하는가에 달렸다. 문서관리 기능을 제대로 설계하려면 리스코프 치환 원칙을 알아야한다. 언제 상속을 사용해야 하는지와 관련해서는 '상속보다 조합' 원칙도 알아야한다. 유지보수가 쉽고 좋은 테스트를 만드는 방법을 활용해 기존에 배운 자동화된 코드 구현 지식을 확장한다. 설계 다양한 방법으로 설계가 가능하므로 다양한 설계와 모델링 중 한 가지를 선택한다. 테스트 주도 개발(TDD)은 프로그램을 시작하는 아주 좋은 방법 중 하나이며 이미 예제를 풀어보면서 사용한 방법이다. 임포터 다양한 종류의 문서를 임포트하는 것이 문서 관리 시스템의 핵심 기능이다. 파일의..

Study/java 2020.11.18

실전 자바 소프트웨어 개발 정리 - 2

모든 소스는 github에 올려두었습니다. 입출금 내역 분석기 확장판 목표 코드베이스에 유연성을 추가하고 유지보수성을 개선하는 데 도움을 주는 개방/패쇄 원칙(open/closed principle (OCP)) 을 배운다. 언제 인터페이스를 사용해야 좋을지를 설명하는 일반적인 가이드라인과 높은 결합도를 피할 수 있는 기법도 배운다. 자바에서 언제 API에 예외를 포함하거나 포함하지 않을지를 결정하는 자바의 예외 처리 방법을 배운다. 메이븐, 그레이들 같은 검증된 빌드 도구를 이용해 자바 프로젝트를 시스템적으로 빌드하는 방법도 배운다. 개방/패쇄 원칙 특정 금액 이상의 모든 입출금 내역을 검색하는 메서드를 구현해보자. 간단한 findTransactions() 메서드를 포함하는 BankTransactionF..

Study/java 2020.11.15

실전 자바 소프트웨어 개발

www.yes24.com/Product/Goods/90533758 실전 자바 소프트웨어 개발 실전 프로젝트로 배우는 최신 자바 개발 기법 레벨업 가이드 이제 막 경력을 쌓기 시작한 자바 개발자가 최신 소프트웨어 개발 방법까지 알기란 벅찬 일이다. 테스트 주도 개발 같은 객체지향 www.yes24.com 실전 프로젝트에 쓰이고 있는 자바 다루는 방법에 대해 기술한 책입니다. 읽어보고 정리해보겠습니다!

Study/java 2020.11.13

jpa, querydsl 적용 시 로깅 비교. querydsl로 작성한 쿼리 DBMS에서 쉽게 돌리는 방법. 2탄!

이전 글 ( jpa, querydsl 적용 시 로깅 비교. querydsl로 작성한 쿼리 DBMS에서 쉽게 돌리는 방법. 1탄! ) 에서 jpa, querydsl을 사용했을 때 불편한 점과 해결 방법(로깅) 및 로깅의 종류에 간략하게 알아보았습니다. 이번 글에서는 최종적으로 선택된 로깅 방법인 p6spy에 대해서 정리하겠습니다. 작성된 글의 소스 코드는 github에 올려두었습니다. JPA, Querydsl 설정 방법은 아래 링크를 참조해주시면 됩니다! JPA에 대해서 궁금하시면? JPA란? JPA 시작 그리고 예제 JPA 테스트 코드로 알아보자! Querydsl에 대해서 궁금하시면? Querydsl란? Querydsl 사용해보자. ( 설정편 ) Querydsl plugin 실행방법 Querydsl 사용..

Develop/spring-data 2020.11.12

java jar 배포 시 파일을 찾을 수 없습니다. [해결방법]

Spring boot는 내장 톰캣이 있기 때문에 jar배포를 하면 내부적으로 톰캣을 띄울 수 있습니다. 그런데 배포하자마자 resource에서 excel file 읽어올 때 에러가 났습니다. fileNotfound!!! 문제되는 소스는 아래와 같습니다. File file = ResourceUtils.getFile("classpath:" + filePath); Local에서는 정상작동하는데 왜 안되는가 하고 여러가지 시도를 했습니다. URL은 잘 가져오나? URL url = ResourceUtils.getURL("classpath:"+filePath); 결과는 url=jar:file:/home/yongtae/server/test-project-0.0.1-SNAPSHOT.jar!/BOOT-INF/classe..

TroubleShooting 2020.11.09

Spring Data JPA 기반 Querydsl 사용해보자. ( Entity 관계 매핑 X편, 테스트 코드 포함 )

이전글 Querydsl 사용해보자. ( 설정편 )에서 설정하는 방법을 알아보았습니다. Entity 관계 매핑되있는 경우는Querydsl 사용해보자. ( Entity 관계 매핑 편, 테스트 코드 포함 )참조해주세요. 이번 글에서는 Querydsl의 버전업으로 Entity 관계 매핑되어있지 않아도 사용가능해졌기 때문에 Querydsl 사용편에 대해서 알아봅시다. 모든 소스는 github에 올려두었습니다. Entity package com.example.querydsl.staff.entity; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import javax.pers..

Develop/spring-data 2020.11.08

Spring Data JPA 기반 Querydsl 사용해보자. ( Entity 관계 매핑 편, 테스트 코드 포함 )

이전 글에서 Querydsl 설정하는 방법에 대해서 알아보았습니다. 이 글은 Entity 관계 매핑이 되어 있는 경우 Querydsl 사용법에 대해서 알아보겠습니다. 모든 소스는 github에 올려두었습니다.  Entity package com.example.queyrdsl.entity; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Getter @Entity @NoArgsConstructor(access = AccessL..

Develop/spring-data 2020.11.08

Spring Batch 란? (예제 소스 포함)

작성한 내용은 우아한 형제들의 이동욱님 블로그, 세미나를 참조해서 작성하였습니다. 테스트 및 적용 내용은 Github에 올려두었습니다. 사내에서 배치 프로젝트를 맡아 Spring Batch를 적용하기로 결정하였습니다. Spring Batch 사용 이전 Spring Batch 이전 스케쥴링 작업은 Scheduler, Quartz 등으로 Spring에서 Annotation으로 선언하여 지정된 시간에 스케줄링을 돌려 구현해놓은 클래스를 호출하여 로직을 실행한다. 기존 스케쥴링 방식으로는 대용량 데이터를 처리하는 도중 에러가 발생하면 처리했던 모든 데이터를 롤백시키고 다시 처음부터 처리해야하고, 몇 번째 데이터에서 에러가 발생했는지, 해당 배치 로직이 성공했는지 실패했는지 로그처리를 하여 확인해야하는 불편함이 ..

728x90
반응형