JAVA(240)
-
[Springboot] 24. Externalized Configuration
43a2795a063e8ce4b6ce79144fd44add 155352484 -3143923589894034969 8 4fc7f846-5653-42c7-a95c-d64b0425aeae 16191 1. 사용할 수 있는 외부 설정 properties YAML 환경 변수 커맨드 라인 매개변수 2. 프로퍼티 우선순위 유저 홈 디렉토리에 있는 spring-boot-dev-tools.properties 테스트 코드에 있는 @TestPropertySource 애노테이션 테스트 코드에 있는 @SpringBootTest 애노테이션의 properties 속성 커맨드 라인 매개변수들 SPRING_APPLICATION JOSN(환경 변수 도는 시스템 속성에 내장된 JSON 형식)의 프로퍼티들 ServiceConfig 파라미터..
2022.10.14 -
[Springboot] 23. SpringApplication #4 Application Exit & Admin Features
1. Application Exit 각각의 SpringApplication은 ApplicationContext가 정상적으로 종료하기 위해서 JVM에 shutdown hook을 등록합니다. 모든 표준 스프링 라이프싸이클 콜백(DisposableBean 인터페이스 또는 @PreDestory 애노테이션)은 사용할 수 있습니다. 게다가 만약 SpringApplication.exit() 메서드가 호출될때 특정한 종료 코드를 반환하고 싶은 경우에 빈(bean)들은 "org.springframework.boot.ExitCodeGenerator" 인터페이스를 구현할 수 있습니다. 이 종료 코드는 다음과 같이 상태코드로써 반환되어 System.exit() 메서드에 전달될 수 있습니다. @SpringBootApplicat..
2022.10.14 -
[Springboot] 23. SpringApplication #3 Web Environment
1. Web Environment SpringApplication은 사용자를 대신하여 ApplicationContext를 생성하려고 합니다. 이때 WebApplicationType에 따라서 ApplicationContext의 타입이 달라집니다. WebApplicationType의 종류 WebApplicationType.NONE : 웹 응용 프로그램으로 실행되지 않아야 하며, 내장된 웹 서버를 시작하지 않아야 합니다. WebApplicationType.REACTIVE : 반응형 웹 응용 프로그램으로 실행. 내장된 반응형 웹 서버를 시작해야 한다. WebApplicationType.SERVLET : 서블릿 기반 웹 응용 프로그램으로 실행. 내장된 서블릿 웹 서버를 시작해야 한다. Spring Web MVC가..
2022.10.13 -
[Springboot] 23. SpringApplication #2 Application Events and Listeners
1. SpringApplication Events and Listeners 일반적인 ContextRefreshedEvent 클래스와 같은 스프링 프레임워크 이벤트들뿐만 아니라 SpringApplication 클래스는 몇가지 추가적인 이벤트들을 전송합니다. 빈으로 등록할 수 없는 리스너 몇몇 이벤트들은 ApplicationContext가 생성되기 전에 발생됩니다. 그래서 이러한 이벤트들은 @Bean으로 등록할 수 없습니다. 대신 다음과 같은 방법으로 리스너를 등록합니다. SpringApplication.addListeners() 메서드를 이용한 방법 SpringApplicationBuilder.listeners() 메서드를 이용한 방법 META-INF/spring.factories 파일에 리스너 참조를 추..
2022.10.13 -
[Springboot] 23. SpringApplication #1 Banner, Customizing
SpringApplication의 실행 SpringApplication 클래스는 main() 메서드로부터 시작된 스프링 애플리케이션을 실행시키는 간단한 방법을 제공합니다. 제일 간단한 방법은 다음과 같이 스프링 애플리케이션 실행을 SpringApplication 클래스에게 위임합니다. public static void main(String[] args) { SpringApplication.run(MySpringConfiguration.class, args); } SpringApplication을 실행하면 다음과 같은 결과가 출력됩니다. . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ ..
2022.10.12 -
[Java][Effective Java] item 18. 상속보다는 컴포지션을 사용하라
개요 코드를 재사용하기 위한 일반적인 방법은 상속을 이용한 방법이 있습니다. 하지만 상속을 이용한 방법은 최선의 선택이 아니고 잘못 사용하면 오류가 발생하기 쉽습니다. 이 글에서는 어떻게 상속이 캡슐화를 망가뜨릴 수 있는지 알아보고, 상속을 잘못되게 설계한 예제를 소개합니다. 그리고 상속을 사용하여 코드를 재사용하는대신 컴포지션을 사용하여 코드를 재사용하는 방법에 대해서 소개합니다. 마지막으로 상속을 사용시 주의할 점에 대해서 알아봅니다. 1. 상속이 캡슐화를 망가뜨릴 가능성이 높은 이유는 무엇인가? 메서드 호출과는 달리 상속의 사용은 캡슐화를 망가뜨릴 가능성이 높아지게 됩니다. 상위 클래스가 어떻게 구현하느냐에 따라 하위 클래스의 동작에 이상이 발생시키거나 하위 클래스의 멤버를 노출시킬 수 있습니다. ..
2022.10.10