Yun Blog

기술 블로그

ConstraintValidator을 이용해서 효과적인 검증

코드는 Github에 공개 되어있습니다. 스프링에서는 JSR 303 기반 어노테이션 기반으로 일관성 있는 Validation을 진행할 수 있습니다. 하지만 @NotNull, @NotEmpty, @Email과 같은 검증은 가능하지만 비즈니스적에 맞는 Validation은 별도로 진행해야 합니다. 예를 들어 주문에 대한 결제 정보를 받는 경우 카드 결......

Utterances 적용하기

Utterances 소개 Utterances는 GitHub Issue 기반으로 Comment를 작성할 수 있게 해줍니다. Utterances의 장점 GitHub Issue 기반이기 때문에 블로그 플랫폼을 이전해도 기존 Comment을 그대로 가져갈 수 있음 개발 블로그 라면 Github 계정으로 댓글을 작성할 수 있기 때문에 사용성이 용이함 뭔가 있......

생산성 향상 - 비기는 없다

들어가기 앞서 생산성에 대해서 더 정확히는 생산성을 위해서 많은 것들을 도입하는데 왜 다 실패하는 것인지에 대해서 이야기해보고 싶다. 나는 2016.05 년부터 사회에 나와서 이제 3년 2개월 정도 프로그래밍 경험이 있다. 이런 짧은 경험으로 생산성과 프로세스에 대해서 논하는 게 조금은 부끄럽지만 내 생각을 한번 글로 정리해보고 싶어 이렇게 포스팅을 ......

테스트 코드 작성에 대한 나름의 고찰

해당 코드는 Github를 확인해주세요. 스프링 기반으로 많은 테스트 코드를 작성하면서 느꼈던 나름의 고찰과 어려움을 정리하는 포스팅입니다. 사실은 테스트 코드 작성 시 효율적인 방법을 소개하는 포스팅을 진행하려 했으나 이런저런 고민들 때문에 명확한 결론이 나지 않아서 이런 고민들을 정리한 포스팅입니다. POJO 테스트는 언제나 옳다 이전에 포스팅......

JPA Fetch Join 적용시 limit 동작하지 않는 이슈

JPA-Tip

결론부터 말씀드리면 Pagealge + Fetct Join을 이용해서 페이징 처리 시 특정 조건의 경우 limit이 발생하지 않아 테이블 FULL Scan 진행해서 애플리케이션 단에서 limit을 조정하는 경우가 있습니다. 성능에 막대한 영향을 주기 때문에 조심해야 합니다. 조건 주문 1 : 제품 N OneToMany 관계에 대해서 Pageagle ......

Spring Actuator 기초 설정

Actuator

해당 코드는 Github에 공개되어 있습니다. 스프링은 Actuator를 이용해서 애플리케이션 상태를 종합적으로 모니터링할 수 있습니다. 의존성 주입 123dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator'} actuator 호......

인텔리제이 Spring Boot Run Gradle에게 위임하기

IntelliJ Tip

인텔리제이에서 Gradle Spring Boot Run을 실행시킬 경우 out 디렉토리가 생성됩니다. Gradle 플러그들이나 Task 작업에 추가적인 것들이 out 디렉토리에 반영이 되지 않습니다. 인텔리제이에서는 Sprong Boot Run 작업을 Gradle에게 위임하는 옵션이 있습니다. 이 옵션으로 인텔리제이에서 Gradle을 사용하여 Run......

Spring Guide - Directory

패키기 구조 가이드

해당 코드는 Github를 확인해주세요. 패키지 구성은 크게 레이어 계층형, 도메인형 이렇게 2 가지 유형이 있다고 생각합니다. 각 유형별로 간단하게 설명하고 제 개인적인 Best Practices를 설명하겠습니다. 계층형 123456789101112131415└── src ├── main │   ├── java │   │   └─......

Spring-JPA Best Practices step-16 - Querydsl를 이용해서 Repository 확장하기 (2)

Querydsl를 이용해서 Repository 확장하기

해당 코드는 Github를 확인해주세요. JpaRepository의 쿼리 메서드를 통해서 간단한 쿼리들을 아래 예제 처럼 쉽게 만들수 있습니다. 12345678910public interface AccountRepository extends JpaRepository<Account, Long> { boolean existsByE......

Gradle 기반 멀티 모듈 구성하기

전체 코드는 Github에서 확인할 수 있습니다. 멀티 모듈 구성 12345678910111213141516├── admin-api│   ├── out│   └── src├── api│   ├── out│   └── src├── build.gradle├── core│   ├── build│   ├── out│   └── src├── gradle│   ......