Backend
TOAST FORWARD - Spring Framework Core 후기
2019년 7월 31일
원문에서 보기 ↗NHN에서 'TOAST FORWARD'라는 이름으로 우수한 내부의 기술교육 콘텐츠를 외부에 공개하고 있다는 것, 알고 계셨나요?
지난 7월 11일에 진행한 '하루에 정리하는 Spring Framework Core' 에 참관하고 왔습니다. '하루에 정리하는 Spring Framework Core'라니, 이번 교육의 발표자이신 김병부 님의 든든한 모습만큼이나 무지무지 기대가 되는 주제였는데요.

요리를 사랑하는 개발자라는 김병부 님. 포스는 이미 마스터 셰프.
김병부 님은 이 교육으로 NHN 내부 교육 평가에서 무려 10점 만점에 10점을 받았던 분이라고 하시네요.
Spring Framework의 특징
교육 내용은 놀랍게도 처음부터 Spring Framework를 바로 다루는 대신에,친절하게도 우선 Framework가 무엇인지, Library와는 어떻게 다른지 같은 내용부터 차근차근 진행되었습니다. 그리고 Spring Framework의 특징, 각각의 모듈들에 대한 구성, Spring 서브 프로젝트들에 대한 설명으로 내용이 이어졌습니다. 이어서 Spring Framework의 핵심은 POJO(Plain Old Java Object)이며, 이를 위한 세 가지 기술 - IoC/DI, PSA, AOP - 에 대해 자세히 설명하기 시작하였습니다.
이후 교육에서 다루었던 주요 내용은 대략 아래와 같았습니다.
IoC/DI
- IoC
- 제어의 역전 (Inversion of Control)
- 패턴
- DI
- 의존성 주입 (Dependency Injection)
- IoC의 한 구현
- 핵심 원칙은 의존성 이슈로부터 행동(behaviour)을 분리시키는 것
지금까지 설명한 IoC/DI 개념에 대해 코드로 데모를 보여주었습니다.
IoC/DI Container, Spring Bean
- Spring Framework의 특징 중 하나: 경량 컨테이너로서 Spring Bean을 직접 관리
- 컨테이너
- Application Context
- BeanFactory
- Spring Bean
- Java 객체
- name, type, object로 구성
ApplicationContext
- ApplicationContext의 정의, 종류
Spring Bean 설정
- 애플리케이션을 설정하기 위해서 사용하는 Spring Bean
- @Configuration + @Bean
- 비즈니스 로직을 처리하는 Spring Bean
- @ComponentScan + Stereotype Annotation
Java Config에서 Bean 설정하는 방법
- @Configuration + @Bean
- BeanDefinition interface를 이용한 방법
JavaConfig에서 Spring Bean 주입하는 방법
@ComponentScan + Stereotype Annotation
- Component Scanning
- Stereotype Annotations
- Stereotype Annotations을 이용한 Spring Bean 생성 및 주입
Spring Bean에 대한 다양한 설정에 대해서도 여러 가지 데모를 통해 코드로 이해하기 쉽게 설명해주셨습니다.
Spring Bean Scope
- singleton
- prototype
- request, session, application, websocket
Bean Lifecycle handling
- JSR-250
- bean init-method, destroy-method
- InitializingBean / DisposableBean interfaces
Bean Lifecycle handling 방법 각각에 대해서도 데모를 진행했었습니다.
Environment 추상화
- Profiles
- Properties
여러 Profile을 설정하고 특정 Profile에 특정 Bean을 설정하는 방법 등에 대해서도 다양한 데모를 보여주셨습니다.
PSA (Portable Service Abstraction)
- 서비스 추상화란
- Spring 트랜잭션 서비스 추상화
서비스 추상화의 예로서 트랜잭션 서비스 추상화를 보여주었으며, 트랜잭션 서비스 추상화를 트랜잭션 적용 이전 상태부터 데모를 통해 상세히 설명해주었고, 스프링에서 어떻게 트랜잭션 서비스 추상화를 구현하고 있는지, 이러한 트랜잭션 서비스 추상화가 데이터 액세스 기술의 변경에도 어떻게 유지될 수 있는지 단계별로 데모를 통해 깊이 있게 잘 설명해주었습니다.
AOP (Aspect-Oriented Programming)
- AOP란
- Spring Framework에서 AOP 사용의 예
- AOP 주요 용어
- Spring이 제공하는 Advice
- Spring AOP vs AspectJ
- 포인트컷 표현식
- Annotation을 이용한 AOP
끝으로 AOP에 대해서는 개념과 용법, 그리고 개인적인 노하우까지 꼼꼼히 설명해주었습니다.
개인적인 소감
김병부 님처럼 꼼꼼하신 강사분이 탄탄한 이론에 다양한 예제의 데모까지 더해 Spring Framework Core에 대한 깊이 있는 내용을 밀도 있게 전해줘서 너무나도 만족스러운 교육이었습니다.
교육을 신청하신 45명 중 단 한 분도 빠짐없이 모두 참석해주셨고 한 분 한 분 모두 매시간 교육에 집중하시는 놀라운 모습을 보여주었습니다.

거기에다 교육 환경도 시원하고 쾌적한 강의장에 샌드위치는 물론이고 커피에 탄산음료에 물, 과자, 사탕 등등 먹고 마실 게 넘쳐나는 데다 경품 이벤트까지 해서 상품마저 하나씩 안겨주는 정말이지 최적의(?) 환경이라 아니할 수 없었습니다.

NHN에서는 'TOAST FORWARD'를 통해 매월 새롭고 다양한 주제로 여러 개발자분들을 만나 뵙고 있습니다. 다음 달에는 게임 주제를 준비했다고 합니다. 계속해서 발전하는 'TOAST FORWARD'를 기대하셔도 좋을 것 같습니다.
