Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
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
1k
図解で学ぶ Spring MVC / Architecture of Spring MVC
otty375
13
31k
PlantUMLでさくさくモデリングライフ
otty375
0
340
Other Decks in Programming
See All in Programming
React本体のコードリーディング
high_g_engineer
1
140
プロポーザルを書いてもらう
pvcresin
0
290
関東Kaggler会_NVIDIA_Nemotron_コンペ_振り返り
rick_ds
0
480
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
160
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
160
メールのエイリアス機能を履き違えない
isshinfunada
0
230
torikago - Ruby::Boxで照らすモジュラモノリスの実行境界
se4weed
1
350
Cloudflare is Agents
chimame
0
150
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
730
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
390
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
260
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
630
Featured
See All Featured
Music & Morning Musume
bryan
47
7.3k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
610
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
200
Facilitating Awesome Meetings
lara
57
7.1k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
210
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
280
Darren the Foodie - Storyboard
khoart
PRO
3
3.6k
Done Done
chrislema
186
16k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
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పఈೖ