본문 바로가기

전체 글38

Gradle 라이브러리 의존성 설정 아래 그래프는 Gradle에서 라이브러리 구성을 설정하는 방법을 설명한다. 녹색 : 라이브러리의 의존성을 선언할 때 사용하는 설정 분홍색 : 라이브러리를 컴파일하거나 실행할 때 사용하는 설정 파란색 : 라이브러리 자체에서 사용하는 설정 Configuration name Description api 컴파일 및 런타임 시 필요한 의존성 선언(사용자에게 의존성 노출) implementation 컴파일 및 런타임 시 필요한 의존성 선언(런타임 시에만 사용자에게 의존성 노출) compileOnly 컴파일 시에만 필요한 의존성 선언 compileOnlyApi 사용자의 모듈을 컴파일 할때 필요한 의존성 선언 runtimeOnly 런타임 시에만 필요한 의존성 선언 apiElements 해당 라이브러리를 컴파일하는 데 .. 2022. 5. 24.
Gradle vs Maven Gradle과 Manven은 빌드, 프로젝트 구성/관리, 테스트, 배포 도구로 최근에는 Gradle을 많이 사용한다고 함. Gradle이 Maven보다 좋은점 Build라는 동적인 요소를 XML로 정의하기에는 어려운 부분이 많다. 설정 내용이 길어지고 가독성 떨어짐 의존관계가 복잡한 프로젝트 설정하기에 부적절 상속구조를 이용한 멀티 모듈 구현 특정 설정을 소수의 모듈에서 공유하기 위해서는 부모 프로젝트를 생성하여 상속하게 해야 함 (상속의 단점 생김) Gradle은 Groovy를 사용하기 때문에, 동적인 빌드는 Groovy 스크립트로 플러그인을 호출하거나 직접 코드를 작성하면 된다. Configuration Injection(설정 주입) 방식을 사용해서 공통 모듈을 상속해서 사용하는 단점을 커버했다. 설.. 2022. 5. 11.
Spring Boot 자동 환경설정 Annotation @SpringBootApplication : 복잡한 환경설정 없이도 웹 애플리케이션을 만들고 실행시켜주는 어노테이션. @ComponentScan : @Configuration, @Repository, @Service, @Controller, @RestController가 붙은 객체를 메모리에 올리는 역할을 한다. excludeFilters에 해당하는 클래스를 제외하고 나머지 객체들을 스캔해서 초기화하도록 설정. 생성된 컨트롤러 객체를 메모리에 올리는 작업 @EnableAutoConfiguration : 자동설정과 관련된 어노테이션. 스프링부트는 스프링 컨테이너를 구동시 두단계로 나누어 객체를 생성함. 스프링부트의 meta 파일(spring.factories)을 읽어서 미리 정의된 자바 설정 파일(@Con.. 2022. 5. 11.
Java GC 가비지 컬렉션 과정 - Generational Garbage Collection GC에 대해서 알아보기 전에 알아야 할 용어가 있다. 바로 'stop-the-world'이다. stop-the-world란, GC을 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것이다. stop-the-world가 발생하면 GC를 실행하는 쓰레드를 제외한 나머지 쓰레드는 모두 작업을 멈춘다. GC 작업을 완료한 이후에야 중단했던 작업을 다시 시작한다. 어떤 GC 알고리즘을 사용하더라도 stop-the-world는 발생한다. 대개의 경우 GC 튜닝이란 이 stop-the-world 시간을 줄이는 것이다. Java는 프로그램 코드에서 메모리를 명시적으로 지정하여 해제하지 않는다. 가끔 명시적으로 해제하려고 해당 객체를 nu.. 2022. 5. 10.