Skip to content

Instantly share code, notes, and snippets.

View ihoneymon's full-sized avatar

Kim Ji-Heon ihoneymon

View GitHub Profile
@ihoneymon
ihoneymon / 20220627-spring-boot-application-configuration-data-desc.adoc
Last active March 29, 2023 08:27
스프링 부트 구성파일 데이터 적재 간단설명

스프링 부트 구성속성 이용(Spring Boot External Configuration)

스프링 부트에서는 애플리케이션에서 필요한 속성을 "애플리케이션 구성파일" application.yml(혹은 applicatoin.properties) 에 작성하여 활용합니다.

Note

데이터구조를 계층형으로 표현할 수 있어서 개인적으로 .properties 파일 보다는 .yml(YAML) 파일 이용을 선호합니다.

@ihoneymon
ihoneymon / 20200718-lombok-copy-constructor-annotation.adoc
Created July 18, 2020 04:26
롬복(lombok)에서 생성자 필드에 선언된 애노테이션을 복사적용하는 것

[Lombok] Constructor annotation 복사하기

스프링에서 사용할 수 있는 스프링 빈 주입방식은 크게 3가지가 있다.

  • 생성자 주입

  • 설정자(Setter)를 이용한 주입

  • 애노테이션(@Autowired, @Inject, @Resource)이 선언된 필드(field) 주입

Filter 에서 넘기고 HandlerInterceptor 에서 받고

다음과 같은 요구사항을 받고 처리한 과정을 정리한다.

요구사항

  • 특정 API 호출시 접근이력(URL, 요청파라미터, 클라이언트 입력정보)을 남겨야 한다.

구현

/**
* @see <a href="https://www.baeldung.com/spring-xml-vs-java-config">web.xml vs Initializer with Spring</a>
* @see <a href="https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-customizing-embedded-containers"></a>
*/
@Configuration
public class CustomTomcatServletWebServerFactoryCustomizer
implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
@Override
public void customize(TomcatServletWebServerFactory factory) {
@ihoneymon
ihoneymon / 2020-05-18-java-csv-write-and-read.md
Created May 18, 2020 06:19
별다른 라이브러리를 사용하지 않고 JDK 만 이용해서 파일읽고쓰기 기능 구현

JAVA - 간단한 CSV 쓰고 읽기

별다른 라이브러리를 사용하지 않고 JDK 만 이용해서 파일읽고쓰기 기능 구현

CsvSheet.java

import lombok.Getter;
import lombok.NoArgsConstructor;

20190528 [java] HeapDump 분석하기

아직까지는 메모리 릭 등의 문제로 힙덤프(HeapDump)를 생성하고 이를 분석하는 일을 해본 경험은 없다(…​ 이 넓고 얕은 지식이여).

우아한형제들 회사 블로그(도움이 될수도 있는 JVM memory leak 이야기, http://woowabros.github.io/tools/2019/05/24/jvm_memory_leak.html)를 보고 난 이후, '방법은 알아(정리해)둬야겠다' 싶어 정리한다.


@ihoneymon
ihoneymon / 20190509-woowahan-tech-seminar-jvm.adoc
Last active May 19, 2023 07:00
2019/05/09 5월 우아한형제들 테크 세미나

20190509 우아한 테크 세미나: 자바, 성능, 모니터링

0. 소개

  • 성능테스트 전문가!

  • 개발자가 반드시 알아야 할 자바 성능 튜닝 이야기, 2015

  • 자바 개발자와 시스템 운영자를 위한 트러블 슈팅 이야기, 2011

@ihoneymon
ihoneymon / 20190415-spring-boot-kotlin-support-reflection.adoc
Last active April 23, 2019 12:26
스프링 부트 애플리케이션을 코틀린으로 구현하기 위해 필요한 라이브러리 kotlin-reflection

20190415 'Kotlin reflection implementation not found at runtime'

코틀린으로 간단한 스프링 부트 애플리케이션을 만들어 실행하는데 눈에 걸리는 로그가 있었다.

> Task :bootiful-sbadmin:bootRun
11:07:07.591 [main] INFO org.springframework.core.KotlinDetector - Kotlin reflection implementation not found at runtime, related features won't be available.
@ihoneymon
ihoneymon / 20190408-kotlin-night-seoul.adoc
Last active July 9, 2021 16:59
깃헙은 은근히 여기저기 얼굴을 많이 비춘다. 아직도 목마른가?

20190408 Kotlin Knight 서울

자바 개발자 관점의 '왜 코틀린인가?' (by 강현식)

  • Java 8 이상 쓰는 곳이 거의 없다.

  • 자바코드는 장황하다?

    • 롬복(Lombok)

      • 롬복이 지원안될 수 있다.

      • Annotation Processor 와 충돌 가능성

@ihoneymon
ihoneymon / 201904-java-byte-array-to-input-stream.adoc
Created April 4, 2019 08:52
[spring] RestTemplate 를 이용한 파일 업로드 기능: ByteArrayResource -> InputStreamResource 변경

20190404 [spring] RestTemplate 를 이용한 파일 업로드 기능

기존 방식의 문제점

public AgreementResponse uploadAgreement(String memberId, File agreementFile) {
    log.info("Upload CMS Agreement: memberId: {}, agreement: {}, size: {}", memberId, agreement.getName(), agreement.getSize());
    MultiValueMap<String, Object> bodyMap = new LinkedMultiValueMap<>();