Skip to content

Instantly share code, notes, and snippets.

Avatar

Kim Ji-Heon ihoneymon

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

[Lombok] Constructor annotation 복사하기

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

  • 생성자 주입

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

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

View 20200618-fitler-and-interceptor.md

Filter 에서 넘기고 HandlerInterceptor 에서 받고

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

요구사항

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

구현

View 20200608-custom-tomcat-servlet-web-server-factory-customizer.java
/**
* @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
별다른 라이브러리를 사용하지 않고 JDK 만 이용해서 파일읽고쓰기 기능 구현
View 2020-05-18-java-csv-write-and-read.md

JAVA - 간단한 CSV 쓰고 읽기

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

CsvSheet.java

import lombok.Getter;
import lombok.NoArgsConstructor;
View 20190529-java-memory-leak-analysis.adoc

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 Oct 13, 2020
2019/05/09 5월 우아한형제들 테크 세미나
View 20190509-woowahan-tech-seminar-jvm.adoc

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

0. 소개

  • 성능테스트 전문가!

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

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

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

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 Apr 9, 2019
깃헙은 은근히 여기저기 얼굴을 많이 비춘다. 아직도 목마른가?
View 20190408-kotlin-night-seoul.adoc

20190408 Kotlin Knight 서울

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

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

  • 자바코드는 장황하다?

    • 롬복(Lombok)

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

      • Annotation Processor 와 충돌 가능성

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

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<>();
@ihoneymon
ihoneymon / 20190324-gradle-kotlin-script.kts
Created Mar 24, 2019
Gradle kotlin DSL 을 이용한 스프링 부트 애플리케이션 빌드스크립트 예제
View 20190324-gradle-kotlin-script.kts
buildscript {
extra["kotlinVersion"] = "1.3.11"
extra["springBootVersion"] = "2.1.1.RELEASE"
repositories {
maven("https://plugins.gradle.org/m2/")
}
dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${extra["kotlinVersion"]}")
You can’t perform that action at this time.