SlideShare a Scribd company logo
1 of 76
Download to read offline
스프링보다 중요한 스프링 이야기
박성철

(한국 스프링 사용자 모임; KSUG)
生卽苦
좋은 SW란?
좋은 SW란?
기능 품질 구조 품질
신규 기능 추가
기능 구현 + 통합
“우린 못해!”

“우린 안해!”
소프트웨어 위기
소프트웨어 위l의 주요한 위lr 컴퓨터 성능이 몇 수십 배나 더 강력해졌기
때문입st! 심하게 말하면, 컴퓨터가 없었을  r 프로i래밍에r 전혀 문제가
없었습st( q린 컴퓨터 몇 개 뿐이었을  r 프로i래밍이 조k 문제가 되었
c, 이제r 거v한 컴퓨터에 프로i래밍x 따라서 거v한 문제가 되었습st(
' 에츠허르 w이크스트라 / 1.-, 01M 튜링상 수상 연설
F. L. 바우어(Fritz Bauer), 1968, 나토 SW 공학 학회

http://homepages.cs.ncl.ac.uk/brian.randell/NATO/NATOReports/index.html
인텔 CPU 클럭 속도 향상 속도
미녀라고 하더니…
SW 위기
SW 개발 문제
SW 품질 문제
SW 기능 문제
SW 구조 문제
보이는 문제
숨은 문제
SW 개발 문제
SW 기능 문제
SW 구조 문제
보이는 문제
숨은 문제
테스트
설계 & 아키텍처
개발 방법론
분해

(decomposition, factoring)
관심사 분리

(Separation of concerns)
Edsger W. Dijkstra, 1974, "On the role of scientific thought”



“e심사 분리r, 완벽하지r 않t 해x, 아직은 ph가의 생각을 효율
적으로 정리하rw 사용할 수 있r 유일한 l법이t(”

“sepaKaMCoG o@ coGceKGs X eOeG C@ GoM peK@ecMly possCble Cs yeM Mhe
oGly aOaClable MechGCJue @oK e@@ecMCOe oKdeKCGA o@ oGe’s MhouAhMs”

“특정 e점에 주의를 집중함”

“@ocusCGA oGe's aMMeGMCoG upoG some aspecM”
SW 구조
코드 한 덩어리
수평적 분리
표현 계층
애플리케이션 계층
도메인 계층
데이터 접근/시스템 통합 계층
수직적 분리
기능A
기능B
기능C
기능D
기능E
기능F
수평/수직적 분리
AaaControl
AaaService
AaaBiz
AaaDao
BbbControl
BbbService
BbbBiz
BbbDao
CccControl
CccService
CccBiz
CccDao
DddControl
DddService
DddBiz
DddDao
수평/수직적 분리
AaaControl
XxxService
AbcBiz
QazDao
BbbControl
WsxDao
CccControl
YyyService
EdcDao
DddControl
ZzzService
RfvDao
DefBiz GhiBiz JklBiz MnoBiz
사용자 인터페이스 모델
쓰임새(Use Case) 모델
데이터 모델
객체 지향 프로그래밍
객체지향 프로그래밍
동적 디스패치
캡슐화 서브타입 다형성
객체 위임
상속
Open
Recursion
클래스
인스턴스
메서드
추상화
다이나믹 디스패치 ≒ 메시징
“m게 OO7r 메시징d 상태 처리 d정의 지역적 보존,
보호, 은익d 모든 것의 극u적인 지연 바인딩 뿐이t(”

“OO7 Mo me meaGs oGly messaACGA, local KeMeGMCoG aGd pKoMecMCoG aGd
hCdCGA o@ sMaMe'pKocess, aGd exMKeme laMe'bCGdCGA o@ all MhCGAs”
“중요한 착안은 “메시지”이t( 이r 스몰톡d 스퀵 핵심
의 본질이t( 일본어에 마(ま)라r 짧은 u어가 있t(”

“9he bCA Cdea Cs “messaACGA" MhaM Cs PhaM Mhe keKGal o@ SmallMalk)SJueak Cs
all abouM( 9he JapaGese haOe a small PoKd Tma’(((”
앨런 케이(0laG Kay)
間
순서도 vs 소통도

(flow chart vs communication diagram)
메시지
대면 대화 X 지인과의 전화 통화 X
메시지
맥도날드에서 주문하기 O
invokeinterface
자바의 네(다섯)가지 호출 방식
invokestatic invokespecial
invokevirtual
invokedynamic
안o 친f야( 이것 좀 부탁해(
n가 ph지 몰라x 신분은 아s 이것 좀 처리해줘(
n가 ph지 x무지 모르겠지만 이것 좀 처리해줘(
인터페이스 중심 설계
“7KoAKammCGA Mo aG CGMeK@ace,SGoM aG CmplemeGMaMCoG”
2o@ 디자인 패턴
X
설계
구현
역할
의존관계 역전 원칙

(Dependency inversion principle; DIP)
AbcService
X
SomeRepository
SomeDao
서비스 계층
데이터 접근 계층
생성과 사용 분리

(Separation of Use from Construction)
객체 생성 문제
malloc() new
?
GRASP의 생성자(creator) 원칙
누가 객체를 생성해야 하나?

대상 클래스로 구성되는 클래스

대상 클래스를 담고 있는 클래스

대상 클래스의 인스턴스를 기록하는 클래스

대상 클래스와 가깝게 사용되는 클래스

대상 클래스를 생성하는데 필요한 데이터가 있는 클래스
5A A G
 9AN J N G
 1NN A
 :JB R A
  GAN
객체 생성과 구현 의존 문제
사용
생성
구현에 의존
Servicesvc=newAwesomeService();
svc.showMeTheMoney();
AwesomeService
Service
공장 매서드 패턴
사용
생성
publicdoThis(){
Servicesvc=createService()
svc.showMeTheMoney();
}
protectedServicecreateService();
AwesomeService
Service
protectedServicecreateService(){
returnnewAwesomeService();
}
공장 매서드
복잡한 의존 관계 문제
No man is an island entire of itself; every
man  is a piece of the continent, a part of
the main;
사용 생성
?
애플리케이션 구성
마법사
피예로
글린다
엘파바네사로즈
딜라몬드
김선영
박혜나
김소현
김보영
이지훈
조상웅
남경주
이상준
마법사피예로글린다엘파바
역할 배우배역구성
객체
메시지 (역할) 데이터  로직(구현)
인터페이스
Acme Processor
AcmeUI AcmeLogic AcmeDAO
AcmeUI
AcmeL
ogic
AcmeD
AO
RealAcmeLogic RealAcmeDAO
인터페이스
클래스
예) Acme Processor
인터페이스를 사용한 설계
DIP
AcmeUI
AcmeL
ogic
AcmeD
AO
RealAcmeLogic DevAcmeDAO
예) Acme Processor 개발용
AcmeUI
AcmeL
ogic
AcmeD
AO
FakeAcmeLogic X
예) Acme Processor UI 테스트용
배역 구성
AcmeL
ogic
AcmeD
AO
RealAcmeLogic
RealAcmeDAO
상용
DevAcmeDAO
개발
TestAcmeDAO
테스트
FakeAcmeLogic
UI테스트
AcmeTestCase
테스트
AcmeUI
RealBigAcmeDAO
빅데이터
추상 공장 패턴
사용 생성
공장1
공장2
공장3
+ =
+ =
+ =
구성1
구성2
구성3
생
성
요청 구현
구현
의존성 주입

(Dependency Injection)
사용
생성
구성 메타 데이터 1
구성 메타 데이터 2
구성 메타 데이터 3
구성1
구성2
구성3
DI 프레임워크
+
+
+
점진적인 성장
변경비용
시간
기술부채
예
상
현실
시장 대응 속도
D N/ RRR BG F J DJ JN GA A J ((- )., ,
설계 시점
2
  AN
 ;
 4 J
“시스템 설계에 매일 투자하라( ((( 현재 설b가 여러분이 이해한 최선의 설b와
일치하x록 점진적이면서x 지속적으로 작업한t(” ' 켄트 벡
폭포수 근본주의
BDUF(포괄적 사전 설계)
DUF
창발적 설계
막 개발
YAGN!!!
JP
 1 U
 5J
 7AA
 
설계 = 소스 코드
J
  N
  J
  JP
  P G
 NJB R A0
  J
  N
 
JP
  AN
 NJB R A
 
 
B G
 NJP A
  J A
  N
  DA

More Related Content

What's hot

Beyond Java: 자바 8을 중심으로 본 자바의 혁신
Beyond Java: 자바 8을 중심으로 본 자바의 혁신Beyond Java: 자바 8을 중심으로 본 자바의 혁신
Beyond Java: 자바 8을 중심으로 본 자바의 혁신Sungchul Park
 
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with SpringJoshua Long
 
JavaScript - Chapter 10 - Strings and Arrays
 JavaScript - Chapter 10 - Strings and Arrays JavaScript - Chapter 10 - Strings and Arrays
JavaScript - Chapter 10 - Strings and ArraysWebStackAcademy
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework Serhat Can
 
Spring Cloud Workshop
Spring Cloud WorkshopSpring Cloud Workshop
Spring Cloud WorkshopYongSung Yoon
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!Jakub Kubrynski
 
우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈용근 권
 
Spring boot
Spring bootSpring boot
Spring bootsdeeg
 
Node.js Express
Node.js  ExpressNode.js  Express
Node.js ExpressEyal Vardi
 
What is component in reactjs
What is component in reactjsWhat is component in reactjs
What is component in reactjsmanojbkalla
 
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...Edureka!
 

What's hot (20)

Beyond Java: 자바 8을 중심으로 본 자바의 혁신
Beyond Java: 자바 8을 중심으로 본 자바의 혁신Beyond Java: 자바 8을 중심으로 본 자바의 혁신
Beyond Java: 자바 8을 중심으로 본 자바의 혁신
 
Struts2
Struts2Struts2
Struts2
 
Spring Core
Spring CoreSpring Core
Spring Core
 
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with Spring
 
Spring boot jpa
Spring boot jpaSpring boot jpa
Spring boot jpa
 
JQuery introduction
JQuery introductionJQuery introduction
JQuery introduction
 
JavaScript - Chapter 10 - Strings and Arrays
 JavaScript - Chapter 10 - Strings and Arrays JavaScript - Chapter 10 - Strings and Arrays
JavaScript - Chapter 10 - Strings and Arrays
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
Spring Cloud Workshop
Spring Cloud WorkshopSpring Cloud Workshop
Spring Cloud Workshop
 
Redux Thunk
Redux ThunkRedux Thunk
Redux Thunk
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
 
우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈
 
Spring boot
Spring bootSpring boot
Spring boot
 
Jdbc_ravi_2016
Jdbc_ravi_2016Jdbc_ravi_2016
Jdbc_ravi_2016
 
Introduction to Redux
Introduction to ReduxIntroduction to Redux
Introduction to Redux
 
Flask – Python
Flask – PythonFlask – Python
Flask – Python
 
Java Strings
Java StringsJava Strings
Java Strings
 
Node.js Express
Node.js  ExpressNode.js  Express
Node.js Express
 
What is component in reactjs
What is component in reactjsWhat is component in reactjs
What is component in reactjs
 
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
 

Similar to 스프링보다 중요한 스프링 이야기

[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규ChangKyu Song
 
Advanced nGrinder
Advanced nGrinderAdvanced nGrinder
Advanced nGrinderJunHo Yoon
 
2021년 3월 20일 개발자 이야기
2021년 3월 20일 개발자 이야기2021년 3월 20일 개발자 이야기
2021년 3월 20일 개발자 이야기Jay Park
 
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동Sungchul Park
 
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들Kivol
 
[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성NAVER D2
 
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권freeNAVER D2
 
데브옵스(DevOps)의 현재와 미래 - ChatOps & VoiceOps (윤석찬)
데브옵스(DevOps)의 현재와 미래 - ChatOps & VoiceOps (윤석찬)데브옵스(DevOps)의 현재와 미래 - ChatOps & VoiceOps (윤석찬)
데브옵스(DevOps)의 현재와 미래 - ChatOps & VoiceOps (윤석찬)Amazon Web Services Korea
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스Hee Jae Lee
 
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법NAVER D2
 
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용Susang Kim
 
프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정중선 곽
 
Responding to change
Responding to changeResponding to change
Responding to change기룡 남
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴Terry Cho
 
아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지YoungSu Son
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)Dong Chan Shin
 
111 n grinder-deview_day1_track1_session_1_ver_2
111 n grinder-deview_day1_track1_session_1_ver_2111 n grinder-deview_day1_track1_session_1_ver_2
111 n grinder-deview_day1_track1_session_1_ver_2NAVER D2
 
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인Seunghwa Song
 

Similar to 스프링보다 중요한 스프링 이야기 (20)

[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
 
Advanced nGrinder
Advanced nGrinderAdvanced nGrinder
Advanced nGrinder
 
2021년 3월 20일 개발자 이야기
2021년 3월 20일 개발자 이야기2021년 3월 20일 개발자 이야기
2021년 3월 20일 개발자 이야기
 
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
 
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
 
[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성
 
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
 
팀장 잔소리
팀장 잔소리팀장 잔소리
팀장 잔소리
 
데브옵스(DevOps)의 현재와 미래 - ChatOps & VoiceOps (윤석찬)
데브옵스(DevOps)의 현재와 미래 - ChatOps & VoiceOps (윤석찬)데브옵스(DevOps)의 현재와 미래 - ChatOps & VoiceOps (윤석찬)
데브옵스(DevOps)의 현재와 미래 - ChatOps & VoiceOps (윤석찬)
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
 
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
 
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
 
프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정
 
Responding to change
Responding to changeResponding to change
Responding to change
 
ecdevday4
ecdevday4ecdevday4
ecdevday4
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
 
111 n grinder-deview_day1_track1_session_1_ver_2
111 n grinder-deview_day1_track1_session_1_ver_2111 n grinder-deview_day1_track1_session_1_ver_2
111 n grinder-deview_day1_track1_session_1_ver_2
 
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
 

More from Sungchul Park

애자일 안한 이야기
애자일 안한 이야기애자일 안한 이야기
애자일 안한 이야기Sungchul Park
 
Java null survival guide
Java null survival guideJava null survival guide
Java null survival guideSungchul Park
 
자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법Sungchul Park
 
자바 테스트 자동화
자바 테스트 자동화자바 테스트 자동화
자바 테스트 자동화Sungchul Park
 
변경에 강한 애플리케이션, 유기적 애플리케이션
변경에 강한 애플리케이션, 유기적 애플리케이션변경에 강한 애플리케이션, 유기적 애플리케이션
변경에 강한 애플리케이션, 유기적 애플리케이션Sungchul Park
 
자바 서버 애플리케이션 아키텍처 안티 패턴
자바 서버 애플리케이션 아키텍처 안티 패턴자바 서버 애플리케이션 아키텍처 안티 패턴
자바 서버 애플리케이션 아키텍처 안티 패턴Sungchul Park
 
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 Sungchul Park
 
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용Sungchul Park
 
자바8 나머지 공개
자바8 나머지 공개자바8 나머지 공개
자바8 나머지 공개Sungchul Park
 
자바8 람다 나머지 공개
자바8 람다 나머지 공개자바8 람다 나머지 공개
자바8 람다 나머지 공개Sungchul Park
 
java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰Sungchul Park
 
Open Source가 바꾼 자바
Open Source가 바꾼 자바Open Source가 바꾼 자바
Open Source가 바꾼 자바Sungchul Park
 

More from Sungchul Park (17)

애자일 안한 이야기
애자일 안한 이야기애자일 안한 이야기
애자일 안한 이야기
 
Java null survival guide
Java null survival guideJava null survival guide
Java null survival guide
 
자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법
 
Java.next
Java.nextJava.next
Java.next
 
자바 테스트 자동화
자바 테스트 자동화자바 테스트 자동화
자바 테스트 자동화
 
변경에 강한 애플리케이션, 유기적 애플리케이션
변경에 강한 애플리케이션, 유기적 애플리케이션변경에 강한 애플리케이션, 유기적 애플리케이션
변경에 강한 애플리케이션, 유기적 애플리케이션
 
자바 서버 애플리케이션 아키텍처 안티 패턴
자바 서버 애플리케이션 아키텍처 안티 패턴자바 서버 애플리케이션 아키텍처 안티 패턴
자바 서버 애플리케이션 아키텍처 안티 패턴
 
Geeks at SK Planet
Geeks at SK PlanetGeeks at SK Planet
Geeks at SK Planet
 
Java the good parts
Java the good partsJava the good parts
Java the good parts
 
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
 
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
 
자바8 나머지 공개
자바8 나머지 공개자바8 나머지 공개
자바8 나머지 공개
 
자바8 람다 나머지 공개
자바8 람다 나머지 공개자바8 람다 나머지 공개
자바8 람다 나머지 공개
 
java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰
 
Open Source가 바꾼 자바
Open Source가 바꾼 자바Open Source가 바꾼 자바
Open Source가 바꾼 자바
 
Work With Engineer
Work With EngineerWork With Engineer
Work With Engineer
 
DDD 산책
DDD 산책DDD 산책
DDD 산책
 

스프링보다 중요한 스프링 이야기