Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Spring & Spring Boot 基本のキ / Spring & Spring Boo...
Search
otty375
February 23, 2019
Programming
1.9k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Spring & Spring Boot 基本のキ / Spring & Spring Boot for Beginner
otty375
February 23, 2019
More Decks by otty375
See All by otty375
Spring Boot 2.3 の Liveness & Readiness Probes 対応 について調べてみた / Spring Boot 2.3 Liveness & Readiness Probes
otty375
2
1.1k
図解で学ぶ Spring MVC / Architecture of Spring MVC
otty375
13
31k
PlantUMLでさくさくモデリングライフ
otty375
0
340
Other Decks in Programming
See All in Programming
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
260
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
490
Workers Cache を知る
syumai
0
360
Event is what happens
moro
2
670
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
740
最近”作らせてる” ローカルAIアプリの話
akit37
0
470
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
380
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
1k
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
AmebaブログはKMPから卒業します
kmars0605
0
160
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
270
Featured
See All Featured
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
500
Utilizing Notion as your number one productivity tool
mfonobong
4
620
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
890
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
How to train your dragon (web standard)
notwaldorf
96
6.9k
Facilitating Awesome Meetings
lara
57
7.2k
Skip the Path - Find Your Career Trail
mkilby
1
260
Being A Developer After 40
akosma
92
590k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
460
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
640
Transcript
Spring & Spring Boot جຊͷΩ 2019/02/23 #javajo @otty_375
Who am I? • ͍͚(@otty_375) • Javaঁࢠ෦ӡӦϝϯόʔ • Springྺ1΄Ͳ
SpringΛॳΊͯ৮Δํʁ
ࠓͷΰʔϧ • ॳΊͯͷํ • SpringΛͬͯΒ͏ • ܦݧ͕͋Δํ • ཧղΛਂΊͯΒ͏
ʘࠓޙSpringΛֶश͢Δ্ͰͷʹͳΕʗ
Agenda • Spring Projectͱ • Spring Core • Spring MVC
• Spring Boot • ·ͱΊ
ϑϨʔϜϫʔΫͱ
ϑϨʔϜϫʔΫͱ • γεςϜ։ൃͰසൟʹΘΕΔॲཧΛఏڙͯ͠ ͘ΕΔͷ • σʔλΞΫηεɺηογϣϯཧɺೝূ etc. • ར༻͢Δ͜ͱͰϏδωεϩδοΫʹूதͰ͖Δ
Spring Project
Spring Project • Java͚ͷΦʔϓϯιʔεϑϨʔϜϫʔΫ • ෳͷίϯϙʔωϯτͷΈ߹ΘͤͰͰ͖ͯ ͍Δ • ެࣜαΠτ https://spring.io/
Spring Project ͷҰ෦ • Spring Framework • Spring Data •
Spring Security • Spring Batch • Spring Boot
Spring Framework ͷҰ෦ • Spring Core • Dependency Injection (DI)
• Aspect Oriented Programming (AOP) • Spring MVC • Spring Testing
ࠓճѻ͏෦ • Spring Core • Dependency Injection (DI) • Spring
MVC • Spring Boot
Spring Core
Dependency Injection (DI) • ༁͢Δͱʮґଘੑͷೖʯ • ར༻͍ͨ͠ΠϯελϯεΛར༻͢ΔଆͰੜ ͢ΔͷͰͳ͘ɺ֎͔Βઃఆͯ͋͛͠Δ͜ͱ • ʢҙʣDIࣗମSpring͚ͩͷػೳͰͳ͍
DIͷྲྀΕ 1. Beanఆٛͨ͠ΒDIίϯςφʹొ͞ΕΔ 2. ར༻͢ΔଆͷΫϥεͰBeanΛΠϯδΣΫγϣϯ ͯ͠͏
DIͷྲྀΕ 1. Beanఆٛͨ͠ΒDIίϯςφʹొ͞ΕΔ 2. ར༻͢ΔଆͷΫϥεͰBeanΛΠϯδΣΫγϣϯ ͯ͠͏
Beanͱ • Spring͕ཧ͢ΔΠϯελϯεͷ͜ͱ
Beanఆٛͱ • Springʹཧͯ͠΄͍͠Πϯελϯεͩͱ Θ͔ΔΑ͏ʹఆٛ͢Δ͜ͱ
Beanఆٛͷํ๏3ͭ • XMLϕʔε • Java Configϕʔε ࠓճ͜Ε • Ξϊςʔγϣϯϕʔε ࠓճ͜Ε
Java ConfigϕʔεͷྲྀΕ 1. @ConfigurationΛ͚ͭͨJavaΫϥεΛ༻ҙ 2. ͦͷΫϥεʹ@BeanΛ͚ͭͨϝιουΛ࡞ 3. ͦͷϝιουBeanͱͯ͠ఆ͍ٛͨ͠ΫϥεΛ newͨ͠ͷΛΓʹͱΔ
ʘ۩ମྫϋϯζΦϯύʔτʹͯʗ
ΞϊςʔγϣϯϕʔεͷྲྀΕ 1. Beanొ͍ͨ͠ΫϥεͩͱΘ͔ΔΑ͏ͳҹ ʢ=ΞϊςʔγϣϯʣΛ͚ͭΔ • Ξϊςʔγϣϯͷछྨ৭ʑ͋Δɹ @Controller, @Service, @Repository, @Component,
etc. ʘ۩ମྫϋϯζΦϯύʔτʹͯʗ
DIͷྲྀΕ 1. Beanఆٛͨ͠ΒDIίϯςφʹొ͞ΕΔ 2. ར༻͢ΔଆͷΫϥεͰBeanΛΠϯδΣΫγϣϯ ͯ͠͏
DIίϯςφͱ • BeanΛొ͢Δॴͷ͜ͱ
DIίϯςφొͷྲྀΕ 1. Springىಈ࣌ʹBeanఆٛͷҹ͕͍ͭͨ ͷΛ୳͢ 2. ݟ͔ͭͬͨΒDIίϯςφʹొ͢Δ 3. ҹΛ୳͢͜ͱΛίϯϙʔωϯτεΩϟϯ ͱ͍͏
DIίϯςφొͷਤ ᶃ %*ίϯςφ ʢ"QQMJDBUJPO$POUFYUʣ @Service 4BNQMF4FSWJDF Ϋϥε #FBO
4BNQMF4FSWJDF ։ൃऀ͕ΞϊςʔγϣϯΛ͚ͭͯ Beanఆٛ͢Δ
DIίϯςφొͷਤ ᶄ %*ίϯςφ ʢ"QQMJDBUJPO$POUFYUʣ @Service 4BNQMF4FSWJDF Ϋϥε #FBO
4BNQMF4FSWJDF Spring͕ίϯϙʔωϯτΩϟϯͯ͠ BeanରΛ୳͢
DIίϯςφొͷਤ ᶅ %*ίϯςφ ʢ"QQMJDBUJPO$POUFYUʣ @Service 4BNQMF4FSWJDF Ϋϥε #FBO
4BNQMF4FSWJDF Spring͕BeanΛDIίϯςφʹ ొ͢Δ
DIͷྲྀΕ 1. Beanఆٛͨ͠ΒDIίϯςφʹొ͞ΕΔ 2. ར༻͢ΔଆͷΫϥεͰBeanΛΠϯδΣΫγϣϯ ͯ͠͏
ΠϯδΣΫγϣϯͱ • ΫϥεؒͷґଘؔΛ֎͔ΒೖΕͯ͋͛Δ ͜ͱ
ΠϯδΣΫγϣϯͷํ๏3ͭ • ϑΟʔϧυΠϯδΣΫγϣϯ • ηολʔΠϯδΣΫγϣϯ • ίϯετϥΫλΠϯδΣΫγϣϯ ࠓճ͜Ε
ίϯετϥΫλΠϯδΣΫγϣϯ 1. BeanΛར༻͍ͨ͠ΫϥεͷίϯετϥΫλͷ ҾʹΠϯδΣΫγϣϯ͍ͨ͠BeanΛ͠ɺ ࣗͷϑΟʔϧυʹηοτ͍ͯ͘͠ 2. ίϯετϥΫλʹ@AutowiredΛ͚ͭΔɹɹ ʢίϯετϥΫλ͕Ұͭͷ࣌লུՄೳʣ
ʘ۩ମྫϋϯζΦϯύʔτʹͯʗ
%*ίϯςφ @Service 4BNQMF4FSWJDF @Controller @Autowired 4BNQMF$POUSPMMFS QSJWBUFpOBM4BNQMF4FSWJDFTBNQMF4FSWJDF 4BNQMF$POUSPMMFS
4BNQMF4FSWJDFTBNQMF4FSWJDF \ UIJTTBNQMF4FSWJDFTBNQMF4FSWJDF ^ ΠϯδΣΫγϣϯͷਤ ᶃ
%*ίϯςφ @Service 4BNQMF4FSWJDF #FBO 4BNQMF4FSWJDF #FBO 4BNQMF$POUSPMMFS @Controller
@Autowired 4BNQMF$POUSPMMFS QSJWBUFpOBM4BNQMF4FSWJDFTBNQMF4FSWJDF 4BNQMF$POUSPMMFS 4BNQMF4FSWJDFTBNQMF4FSWJDF \ UIJTTBNQMF4FSWJDFTBNQMF4FSWJDF ^ ΠϯδΣΫγϣϯͷਤ ᶄ ΠϯδΣΫγϣϯ
DIͰԿ͕͏Ε͍͔͠ • Πϯελϯεͷ࡞ॳظԽॲཧͳͲΛɹɹ Γग़ͤΔͷͰίʔυͷݟ௨͕͠ྑ͘ͳΔ • DIίϯςφʹΠϯελϯεͷείʔϓɹɹ ϥΠϑαΠΫϧΛཧͯ͠Β͑Δ • ςετͰΠϯελϯεͷࠩ͠ସ͕͑͘͢͠ ͳΔ
Spring MVC
Spring MVC • SpringͰWebΞϓϦέʔγϣϯΛ։ൃ͢Δࡍʹ ར༻͢ΔϑϨʔϜϫʔΫͷҰͭ • MVCύλʔϯΛ࠾༻ • ϦΫΤετϚοϐϯάͳͲΛΞϊςʔγϣϯΛ ར༻ͯ͠ઃఆͰ͖Δ
Spring MVC ͷਤ ϑϩϯτίϯτϩʔϥ %JTQBUDIFS4FSWMFU )BOEMFS.BQQJOH $POUSPMMFS 7JFX3FTPMWFS
7JFX ᶃ ᶄ ᶅ ᶆ ᶇ ᶈ ᶉ ᶊ ᶋ ᶌ
Spring MVC ͷ෦ॲཧ ᶃ ֎෦͔ΒϦΫΤετ͕ͬͯ͘Δ ᶄ DispatcherServlet͕HandlerMappingʹϦΫΤετ͢Δ ᶅ
HandlerMapping͕ϦΫΤετʹԠͨ͡ControllerΛฦͯ͘͠ΕΔ ᶆ DispatcherServlet͕ControllerʹॲཧΛҕৡ͢Δ ᶇ Controller͕View໊ͱModelΛฦ͢ ᶈ DispatcherServlet͕View໊ΛViewResolverʹ͢ ᶉ ViewResolver͕ViewͷશύεΛฦ͢ ᶊ DispatcherServlet͕ViewʹModelΛ͢ ᶋ ViewModelΛݩʹHTMLΛΈཱͯͯฦ͢ ᶌ ֎෦ʹHTMLϨεϙϯεΛฦ͢
ࠓճѻ͏෦ ϑϩϯτίϯτϩʔϥ %JTQBUDIFS4FSWMFU )BOEMFS.BQQJOH $POUSPMMFS 7JFX3FTPMWFS 7JFX
ࠓճѻ͏෦ ᶃ ֎෦͔ΒϦΫΤετ͕ͬͯ͘Δ ᶄ DispatcherServlet͕HandlerMappingʹϦΫΤετ͢Δ ᶅ HandlerMapping͕ϦΫΤετʹԠͨ͡ControllerΛฦͯ͘͠ΕΔ ᶆ
DispatcherServlet͕ControllerʹॲཧΛҕৡ͢Δ ᶇ Controller͕View໊ͱModelΛฦ͢ ᶈ DispatcherServlet͕View໊ΛViewResolverʹ͢ ᶉ ViewResolver͕ViewͷશύεΛฦ͢ ᶊ DispatcherServlet͕ViewʹModelΛ͢ ᶋ ViewModelΛݩʹHTMLΛΈཱͯͯฦ͢ ᶌ ֎෦ʹHTMLϨεϙϯεΛฦ͢
Controllerͱ • HTTPϦΫΤετΛϚοϐϯάͨ͠Γɹɹɹ ྫ֎ϋϯυϦϯάΛߦ͏෦ • @Controller, @RestControllerΞϊςʔγϣϯ Λ͚ͭΔ
RequestMapping • Controllerʹ༻ҙͨ͠ϝιουʹ͚ͭΔΞϊ ςʔγϣϯ • ͜ͷURLʹ͜ͷHTTPϝιουͷϦΫΤετ͕ དྷͨΒ͜ͷॲཧɺͱৼΓ͚ΔͨΊͷઃఆ
Modelͱ • ViewςϯϓϨʔτʹΛड͚ͨ͢Ίʹ ༻͞ΕΔͷ
ModelͷྲྀΕ • ControllerͰModelʹใΛ٧Ίͯฦ͢ • ModelͷதͷใView͕ݟΕΔҐஔʹ ஔ͔ΕɺViewͷΈཱͯʹΘΕΔ
ModelͷྲྀΕͷਤ ᶃ ϑϩϯτίϯτϩʔϥ %JTQBUDIFS4FSWMFU )BOEMFS.BQQJOH $POUSPMMFS 7JFX3FTPMWFS 7JFX
.PEFM greeting = "hello"
ModelͷྲྀΕͷਤ ᶄ ϑϩϯτίϯτϩʔϥ %JTQBUDIFS4FSWMFU )BOEMFS.BQQJOH $POUSPMMFS 7JFX3FTPMWFS 7JFX
.PEFM greeting = "hello" <p th:text="${greeting}"></p> .PEFM
ModelͷྲྀΕͷਤ ᶅ ϑϩϯτίϯτϩʔϥ %JTQBUDIFS4FSWMFU )BOEMFS.BQQJOH $POUSPMMFS 7JFX3FTPMWFS 7JFX
.PEFM greeting = "hello" <p th:text="${greeting}"></p> <p>hello</p> .PEFM
ϑϩϯτίϯτϩʔϥͷઃఆ • ࣗಈͰϑϩϯτίϯτϩʔϥΛ͑ΔΑ͏ʹ ͢ΔʹɺJava ConfigΫϥεʹ @EnableWebMvcΞϊςʔγϣϯΛ͚ͭΔ
Spring Boot
Spring Boot • SpringΛΑΓखܰʹɺ࠷খݶͷઃఆͰ͑Δ Α͏ʹͨ͠ϑϨʔϜϫʔΫ
Spring Boot ͷಛ • Auto Configuration • Spring Boot Starter
• Stand-alone Application • etc.
Spring Boot ͷಛ • Auto Configuration • Spring Boot Starter
• Stand-alone Application
Auto Configuration • SpringΛ༻͢Δʹ༷ʑͳઃఆ͕ඞཁ • Spring Bootʹଟ͘ͷઃఆʢJava Configʣ ͕σϑΥϧτͰ༻ҙ͞Ε͍ͯΔ •
@EnableAutoConfigurationΛ͚Δͱඞཁͳ ઃఆΛࣗಈͰಡΈࠐΜͰ͘ΕΔ
Spring Boot ͷಛ • Auto Configuration • Spring Boot Starter
• Stand-alone Application
Spring Boot Starter • Spring BootʹඞཁͳϥΠϒϥϦΛ·ͱΊͯ ͘ΕΔStarterͱ͍͏Έ͕͋Δ • ґଘؔʹspring-boot-starter-xxxΛՃ͢Δ ͚ͩͰؔ࿈͢ΔϥΠϒϥϦΛ·ͱΊͯऔಘͯ͠
͘ΕΔ
ࠓճ͏Starter • spring-boot-starter-web • webΞϓϦέʔγϣϯΛ࡞͢ΔͨΊ • spring-boot-starter-thymeleaf • Thymeleafͱ͍͏ViewςϯϓϨʔτΤϯδϯ Λར༻͢ΔͨΊ
Spring Boot ͷಛ • Auto Configuration • Spring Boot Starter
• Stand-alone Application
Stand-alone Application • jarΛੜ͢ΔࡍʹΈࠐΈαʔόΛؚΜͰɹ ͘ΕΔͷͰ୯ମͰ࣮ߦՄೳ • warΛੜͯ͠αʔόʹσϓϩΠ͠ͳͯ͘ ࣮ߦͰ͖Δ
·ͱΊ
Spring & Spring Boot ·ͱΊ • ෳͷίϯϙʔωϯτʢSpring Core, Spring MVC,
etc.ʣͷΈ߹ΘͤͰͰ͖͍ͯΔ • SpringͷࠜװDIʹ͋Γ • SpringΛΑΓखܰʹ͑ΔΑ͏ʹͨ͠ͷ͕ Spring Boot
ࢀߟࢿྉ
ࢀߟࢿྉʢWebʣ • Spring ެࣜαΠτ • https://spring.io/ • ॳΊͯͰ30Ͱ͔ΔSpring 5 &
Spring Boot 2Φʔ όʔϏϡʔ • https://www.slideshare.net/ masatoshitada7/30spring-5-spring- boot-2-103523666
ࢀߟࢿྉʢॻ੶ʣ • Springపఈೖ