SpringBoot 29

커스텀 로그 설정 파일을 사용하기

Logback : logback-spring.xml / 로그백 사용, 스프링부트에서 profile 및 Environment 프로퍼티 확장기능을 제공함 Log4j2 : lo4j2-spring.xml logback 규격 맞는 로거 형식 맞추기 클래스 패스에 logback-spring.xml 추가 log4j 로깅 모듈 변환 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-logging org.springframework.boot spring-boot-starter-log4j2

SpringBoot 2020.10.07

스프링부트 기본 로거 설정

org.springframework.boot spring-boot-starter-logging 스프링 부트는 기본적으로 Commons Logging 을 사용함. 로깅퍼사드로 SLF4j 를 쓴다.(로거 API를 추상화하여 연결해주는 인터페이스) Commons Logging 의 메모리 누수등의 대한 이슈로 기피현상이 생겨났다. Spring 5 부터 JCL 를 만들어 컴파일 시점에 Commons Logging 을 SLF4j 로 변화시키는 모듈이 만들어졌다. 결국 최종적으로는 SLF4J의 구현체인 Logback을 쓰게 되는 것이다. 프로그램 환경변수에 --debug 를 주거나 VM 옵션에 -Ddebug 를 주면 스프링 코어 핵심 라이브러리에 대해서만 디버깅 레벨로 로그가 찍한다. 모든 과정을 디버그레벨로 보고 ..

SpringBoot 2020.10.07

Profile

스프링 부트의 Profile 설정은 properties 파일에서한다. spring.profiles.active spring.profiles.include : 해당 설정파일 실행시 같이 활성화할 profile application-{profile}.properties 해당 프로파일에 적용할 프로퍼티 application-prod.properties : prod 프로파일 활성화 시 적용할 properties prod @Profile 설정 클래스 실행 soomin.name = soomin spring.profiles.active=prod soomin.fullName = ${soomin.name} Jung prod 설정클래스 활성화시 사용할 application-prod.properties spring.prof..

SpringBoot 2020.10.04

외부설정

application.properties 스프링부트 구동시 자동으로 로딩하는 규약 ${random.int} 등으로 랜덤 값 생성가능 ${key} 로 기존에 정의된 값 사용가능 soomin.name = soomin soomin.age = ${random.int} soomin.fullName = ${soomin.name} Jung Application.properties 의 다중 빌드와 우선순위 겹치는 것은 우선순위로 재정의 file:/config/ (1): 프로젝트 파일 밑의 config 폴더 밑 file:./ (2): 프로젝트 루트 classpath:/config/ (3): 클래스패스의 config 폴더 밑 classpath:/ (4) : 클래스패스 우선 순위 유저 홈 디렉토리에 있는 spring-boo..

SpringBoot 2020.10.03

SpringApplication 클래스

기본 log 는 INFO 레벨 (vm 환경설정에서 -Ddebug 설정시 디버그 로깅으로 자동설정 확인가능 ) 배너 banner.txt || gif || jpg || png 실행시 배너 로고 바꾸는... application.properties > spring.banner.location 에서 설정가능(classpath 기준) 배너를 끄고 싶다면 SpringApplication 에 setBannerMode() 에 상수로 OFF 를 주면 됨 이벤트 기반으로 리스너를 등록하고 싶다 ApplicationListener 구현 클래스 사용 이 때 기준은 2가지 Application 이 구동되기 전 : SpringApplication 에 메서드에 등록 Application 이 구동된 후 : Spring Bean 으로..

SpringBoot 2020.10.03

독립적으로 실행가능한 JAR

spring-boot-maven-plugin 과 관련이 깊다. mvn clean : 메이븐 생명주기 및 빌드 관련. -DTestSkip < 패키징과정에서 테스트생략 spring-boot-maven-plugin 의 repackage goal 을 돌리고있다. [INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ study --- [INFO] Building jar: C:\Users\doli0\Desktop\Inflearn\study\target\study-0.0.1-SNAPSHOT.jar [INFO] [INFO] --- spring-boot-maven-plugin:2.3.5.RELEASE:repackage (repackage) @ study --- [INFO] Re..

SpringBoot 2020.10.03

내장 웹 서버

스프링 부트는 서버가 아니다. 서버 객체를 생성하는 것 포트설정 톰캣에 컨텍스트 추가 서블릿 만들기 톰캣에 서블릿 추가 컨텍스트에 서블릿 맵핑 톰캣 실행 및 대기 이 모든 과정을 상세하고 유연하게 설정하고 실행해주는 것이 스프링 부트의 자동 설정이다. 자동 설정 과 관련된 내용이다. 톰캣 설정시 자동 설정 Tomcat 객체가 만들어지고 Property 설정클래스에서 property 파일을 읽어 들여 사용하는 것이다. 다른 Container 는 어떻게 쓰는가. 태그로 spring-boot-starter-tomcat 을 제외 undertow 를 의존에 추가해 Container 를 변경한 모습. org.springframework.boot spring-boot-starter-web org.springframe..

SpringBoot 2020.10.02

자동 설정 구현.2

어떻게 덮어쓰기를 방지할까. 덮어쓰기 방지하기 : ComponentScan 우선시 되기 @ConditionalOnMissingBean : 해당 타입의 빈이 없을때만 해당 빈을 등록해라 일일히 빈 등록을 하지 않고 application.properties 에 등록해서 쓰기 설정클래스에 프로퍼티에 대한 설정 클래스 정의 @ConfiguationProperties(prefix) 설정을 사용하기 위해 설정클래스에 @EnableConfigurationProperties(Property Class) 자동 설정 파일의 Bean 객체에 Properties 클래스 주입 @ConfigurationProperties("holoman") public class HolomanProperties { private String n..

SpringBoot 2020.10.02

자동 설정 구현.1

xxx-Spring-Boot-AutoConfigure 모듈 : 자동 설정 파일 xxx-Spring-Boot-Starter 모듈 : 의존성 정의 파일 보통 프로젝트를 나누어서 정의한다. 메이븐 프로젝트에 설정 모듈과 의존 관리 모듈을 추가 4.0.0 me.soomin soominspringbootstarter 1.0-SNAPSHOT org.springframework.boot spring-boot-autoconfigure org.springframework.boot spring-boot-autoconfigure-processor true org.springframework.boot spring-boot-dependencies 2.0.3.RELEASE pom import 다른 프로젝트에 있는 라이브러리에 대..

SpringBoot 2020.10.02