Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Spring & Spring Boot جຊͷΩ 2019/02/23 #javajo @otty_375
Slide 2
Slide 2 text
Who am I? • ͍͚(@otty_375) • Javaঁࢠ෦ӡӦϝϯόʔ • Springྺ1΄Ͳ
Slide 3
Slide 3 text
SpringΛॳΊͯ৮Δํʁ
Slide 4
Slide 4 text
ࠓͷΰʔϧ • ॳΊͯͷํ • SpringΛͬͯΒ͏ • ܦݧ͕͋Δํ • ཧղΛਂΊͯΒ͏ ʘࠓޙSpringΛֶश͢Δ্ͰͷʹͳΕʗ
Slide 5
Slide 5 text
Agenda • Spring Projectͱ • Spring Core • Spring MVC • Spring Boot • ·ͱΊ
Slide 6
Slide 6 text
ϑϨʔϜϫʔΫͱ
Slide 7
Slide 7 text
ϑϨʔϜϫʔΫͱ • γεςϜ։ൃͰසൟʹΘΕΔॲཧΛఏڙͯ͠ ͘ΕΔͷ • σʔλΞΫηεɺηογϣϯཧɺೝূ etc. • ར༻͢Δ͜ͱͰϏδωεϩδοΫʹूதͰ͖Δ
Slide 8
Slide 8 text
Spring Project
Slide 9
Slide 9 text
Spring Project • Java͚ͷΦʔϓϯιʔεϑϨʔϜϫʔΫ • ෳͷίϯϙʔωϯτͷΈ߹ΘͤͰͰ͖ͯ ͍Δ • ެࣜαΠτ https://spring.io/
Slide 10
Slide 10 text
Spring Project ͷҰ෦ • Spring Framework • Spring Data • Spring Security • Spring Batch • Spring Boot
Slide 11
Slide 11 text
Spring Framework ͷҰ෦ • Spring Core • Dependency Injection (DI) • Aspect Oriented Programming (AOP) • Spring MVC • Spring Testing
Slide 12
Slide 12 text
ࠓճѻ͏෦ • Spring Core • Dependency Injection (DI) • Spring MVC • Spring Boot
Slide 13
Slide 13 text
Spring Core
Slide 14
Slide 14 text
Dependency Injection (DI) • ༁͢Δͱʮґଘੑͷೖʯ • ར༻͍ͨ͠ΠϯελϯεΛར༻͢ΔଆͰੜ ͢ΔͷͰͳ͘ɺ֎͔Βઃఆͯ͋͛͠Δ͜ͱ • ʢҙʣDIࣗମSpring͚ͩͷػೳͰͳ͍
Slide 15
Slide 15 text
DIͷྲྀΕ 1. Beanఆٛͨ͠ΒDIίϯςφʹొ͞ΕΔ 2. ར༻͢ΔଆͷΫϥεͰBeanΛΠϯδΣΫγϣϯ ͯ͠͏
Slide 16
Slide 16 text
DIͷྲྀΕ 1. Beanఆٛͨ͠ΒDIίϯςφʹొ͞ΕΔ 2. ར༻͢ΔଆͷΫϥεͰBeanΛΠϯδΣΫγϣϯ ͯ͠͏
Slide 17
Slide 17 text
Beanͱ • Spring͕ཧ͢ΔΠϯελϯεͷ͜ͱ
Slide 18
Slide 18 text
Beanఆٛͱ • Springʹཧͯ͠΄͍͠Πϯελϯεͩͱ Θ͔ΔΑ͏ʹఆٛ͢Δ͜ͱ
Slide 19
Slide 19 text
Beanఆٛͷํ๏3ͭ • XMLϕʔε • Java Configϕʔε ࠓճ͜Ε • Ξϊςʔγϣϯϕʔε ࠓճ͜Ε
Slide 20
Slide 20 text
Java ConfigϕʔεͷྲྀΕ 1. @ConfigurationΛ͚ͭͨJavaΫϥεΛ༻ҙ 2. ͦͷΫϥεʹ@BeanΛ͚ͭͨϝιουΛ࡞ 3. ͦͷϝιουBeanͱͯ͠ఆ͍ٛͨ͠ΫϥεΛ newͨ͠ͷΛΓʹͱΔ ʘ۩ମྫϋϯζΦϯύʔτʹͯʗ
Slide 21
Slide 21 text
ΞϊςʔγϣϯϕʔεͷྲྀΕ 1. Beanొ͍ͨ͠ΫϥεͩͱΘ͔ΔΑ͏ͳҹ ʢ=ΞϊςʔγϣϯʣΛ͚ͭΔ • Ξϊςʔγϣϯͷछྨ৭ʑ͋Δɹ @Controller, @Service, @Repository, @Component, etc. ʘ۩ମྫϋϯζΦϯύʔτʹͯʗ
Slide 22
Slide 22 text
DIͷྲྀΕ 1. Beanఆٛͨ͠ΒDIίϯςφʹొ͞ΕΔ 2. ར༻͢ΔଆͷΫϥεͰBeanΛΠϯδΣΫγϣϯ ͯ͠͏
Slide 23
Slide 23 text
DIίϯςφͱ • BeanΛొ͢Δॴͷ͜ͱ
Slide 24
Slide 24 text
DIίϯςφొͷྲྀΕ 1. Springىಈ࣌ʹBeanఆٛͷҹ͕͍ͭͨ ͷΛ୳͢ 2. ݟ͔ͭͬͨΒDIίϯςφʹొ͢Δ 3. ҹΛ୳͢͜ͱΛίϯϙʔωϯτεΩϟϯ ͱ͍͏
Slide 25
Slide 25 text
DIίϯςφొͷਤ ᶃ %*ίϯςφ ʢ"QQMJDBUJPO$POUFYUʣ @Service 4BNQMF4FSWJDF Ϋϥε #FBO 4BNQMF4FSWJDF ։ൃऀ͕ΞϊςʔγϣϯΛ͚ͭͯ Beanఆٛ͢Δ
Slide 26
Slide 26 text
DIίϯςφొͷਤ ᶄ %*ίϯςφ ʢ"QQMJDBUJPO$POUFYUʣ @Service 4BNQMF4FSWJDF Ϋϥε #FBO 4BNQMF4FSWJDF Spring͕ίϯϙʔωϯτΩϟϯͯ͠ BeanରΛ୳͢
Slide 27
Slide 27 text
DIίϯςφొͷਤ ᶅ %*ίϯςφ ʢ"QQMJDBUJPO$POUFYUʣ @Service 4BNQMF4FSWJDF Ϋϥε #FBO 4BNQMF4FSWJDF Spring͕BeanΛDIίϯςφʹ ొ͢Δ
Slide 28
Slide 28 text
DIͷྲྀΕ 1. Beanఆٛͨ͠ΒDIίϯςφʹొ͞ΕΔ 2. ར༻͢ΔଆͷΫϥεͰBeanΛΠϯδΣΫγϣϯ ͯ͠͏
Slide 29
Slide 29 text
ΠϯδΣΫγϣϯͱ • ΫϥεؒͷґଘؔΛ֎͔ΒೖΕͯ͋͛Δ ͜ͱ
Slide 30
Slide 30 text
ΠϯδΣΫγϣϯͷํ๏3ͭ • ϑΟʔϧυΠϯδΣΫγϣϯ • ηολʔΠϯδΣΫγϣϯ • ίϯετϥΫλΠϯδΣΫγϣϯ ࠓճ͜Ε
Slide 31
Slide 31 text
ίϯετϥΫλΠϯδΣΫγϣϯ 1. BeanΛར༻͍ͨ͠ΫϥεͷίϯετϥΫλͷ ҾʹΠϯδΣΫγϣϯ͍ͨ͠BeanΛ͠ɺ ࣗͷϑΟʔϧυʹηοτ͍ͯ͘͠ 2. ίϯετϥΫλʹ@AutowiredΛ͚ͭΔɹɹ ʢίϯετϥΫλ͕Ұͭͷ࣌লུՄೳʣ ʘ۩ମྫϋϯζΦϯύʔτʹͯʗ
Slide 32
Slide 32 text
%*ίϯςφ @Service 4BNQMF4FSWJDF @Controller @Autowired 4BNQMF$POUSPMMFS QSJWBUFpOBM4BNQMF4FSWJDFTBNQMF4FSWJDF 4BNQMF$POUSPMMFS 4BNQMF4FSWJDFTBNQMF4FSWJDF \ UIJTTBNQMF4FSWJDFTBNQMF4FSWJDF ^ ΠϯδΣΫγϣϯͷਤ ᶃ
Slide 33
Slide 33 text
%*ίϯςφ @Service 4BNQMF4FSWJDF #FBO 4BNQMF4FSWJDF #FBO 4BNQMF$POUSPMMFS @Controller @Autowired 4BNQMF$POUSPMMFS QSJWBUFpOBM4BNQMF4FSWJDFTBNQMF4FSWJDF 4BNQMF$POUSPMMFS 4BNQMF4FSWJDFTBNQMF4FSWJDF \ UIJTTBNQMF4FSWJDFTBNQMF4FSWJDF ^ ΠϯδΣΫγϣϯͷਤ ᶄ ΠϯδΣΫγϣϯ
Slide 34
Slide 34 text
DIͰԿ͕͏Ε͍͔͠ • Πϯελϯεͷ࡞ॳظԽॲཧͳͲΛɹɹ Γग़ͤΔͷͰίʔυͷݟ௨͕͠ྑ͘ͳΔ • DIίϯςφʹΠϯελϯεͷείʔϓɹɹ ϥΠϑαΠΫϧΛཧͯ͠Β͑Δ • ςετͰΠϯελϯεͷࠩ͠ସ͕͑͘͢͠ ͳΔ
Slide 35
Slide 35 text
Spring MVC
Slide 36
Slide 36 text
Spring MVC • SpringͰWebΞϓϦέʔγϣϯΛ։ൃ͢Δࡍʹ ར༻͢ΔϑϨʔϜϫʔΫͷҰͭ • MVCύλʔϯΛ࠾༻ • ϦΫΤετϚοϐϯάͳͲΛΞϊςʔγϣϯΛ ར༻ͯ͠ઃఆͰ͖Δ
Slide 37
Slide 37 text
Spring MVC ͷਤ ϑϩϯτίϯτϩʔϥ %JTQBUDIFS4FSWMFU )BOEMFS.BQQJOH $POUSPMMFS 7JFX3FTPMWFS 7JFX ᶃ ᶄ ᶅ ᶆ ᶇ ᶈ ᶉ ᶊ ᶋ ᶌ
Slide 38
Slide 38 text
Spring MVC ͷ෦ॲཧ ᶃ ֎෦͔ΒϦΫΤετ͕ͬͯ͘Δ ᶄ DispatcherServlet͕HandlerMappingʹϦΫΤετ͢Δ ᶅ HandlerMapping͕ϦΫΤετʹԠͨ͡ControllerΛฦͯ͘͠ΕΔ ᶆ DispatcherServlet͕ControllerʹॲཧΛҕৡ͢Δ ᶇ Controller͕View໊ͱModelΛฦ͢ ᶈ DispatcherServlet͕View໊ΛViewResolverʹ͢ ᶉ ViewResolver͕ViewͷશύεΛฦ͢ ᶊ DispatcherServlet͕ViewʹModelΛ͢ ᶋ ViewModelΛݩʹHTMLΛΈཱͯͯฦ͢ ᶌ ֎෦ʹHTMLϨεϙϯεΛฦ͢
Slide 39
Slide 39 text
ࠓճѻ͏෦ ϑϩϯτίϯτϩʔϥ %JTQBUDIFS4FSWMFU )BOEMFS.BQQJOH $POUSPMMFS 7JFX3FTPMWFS 7JFX
Slide 40
Slide 40 text
ࠓճѻ͏෦ ᶃ ֎෦͔ΒϦΫΤετ͕ͬͯ͘Δ ᶄ DispatcherServlet͕HandlerMappingʹϦΫΤετ͢Δ ᶅ HandlerMapping͕ϦΫΤετʹԠͨ͡ControllerΛฦͯ͘͠ΕΔ ᶆ DispatcherServlet͕ControllerʹॲཧΛҕৡ͢Δ ᶇ Controller͕View໊ͱModelΛฦ͢ ᶈ DispatcherServlet͕View໊ΛViewResolverʹ͢ ᶉ ViewResolver͕ViewͷશύεΛฦ͢ ᶊ DispatcherServlet͕ViewʹModelΛ͢ ᶋ ViewModelΛݩʹHTMLΛΈཱͯͯฦ͢ ᶌ ֎෦ʹHTMLϨεϙϯεΛฦ͢
Slide 41
Slide 41 text
Controllerͱ • HTTPϦΫΤετΛϚοϐϯάͨ͠Γɹɹɹ ྫ֎ϋϯυϦϯάΛߦ͏෦ • @Controller, @RestControllerΞϊςʔγϣϯ Λ͚ͭΔ
Slide 42
Slide 42 text
RequestMapping • Controllerʹ༻ҙͨ͠ϝιουʹ͚ͭΔΞϊ ςʔγϣϯ • ͜ͷURLʹ͜ͷHTTPϝιουͷϦΫΤετ͕ དྷͨΒ͜ͷॲཧɺͱৼΓ͚ΔͨΊͷઃఆ
Slide 43
Slide 43 text
Modelͱ • ViewςϯϓϨʔτʹΛड͚ͨ͢Ίʹ ༻͞ΕΔͷ
Slide 44
Slide 44 text
ModelͷྲྀΕ • ControllerͰModelʹใΛ٧Ίͯฦ͢ • ModelͷதͷใView͕ݟΕΔҐஔʹ ஔ͔ΕɺViewͷΈཱͯʹΘΕΔ
Slide 45
Slide 45 text
ModelͷྲྀΕͷਤ ᶃ ϑϩϯτίϯτϩʔϥ %JTQBUDIFS4FSWMFU )BOEMFS.BQQJOH $POUSPMMFS 7JFX3FTPMWFS 7JFX .PEFM greeting = "hello"
Slide 46
Slide 46 text
ModelͷྲྀΕͷਤ ᶄ ϑϩϯτίϯτϩʔϥ %JTQBUDIFS4FSWMFU )BOEMFS.BQQJOH $POUSPMMFS 7JFX3FTPMWFS 7JFX .PEFM greeting = "hello"
.PEFM
Slide 47
Slide 47 text
ModelͷྲྀΕͷਤ ᶅ ϑϩϯτίϯτϩʔϥ %JTQBUDIFS4FSWMFU )BOEMFS.BQQJOH $POUSPMMFS 7JFX3FTPMWFS 7JFX .PEFM greeting = "hello"
hello
.PEFM
Slide 48
Slide 48 text
ϑϩϯτίϯτϩʔϥͷઃఆ • ࣗಈͰϑϩϯτίϯτϩʔϥΛ͑ΔΑ͏ʹ ͢ΔʹɺJava ConfigΫϥεʹ @EnableWebMvcΞϊςʔγϣϯΛ͚ͭΔ
Slide 49
Slide 49 text
Spring Boot
Slide 50
Slide 50 text
Spring Boot • SpringΛΑΓखܰʹɺ࠷খݶͷઃఆͰ͑Δ Α͏ʹͨ͠ϑϨʔϜϫʔΫ
Slide 51
Slide 51 text
Spring Boot ͷಛ • Auto Configuration • Spring Boot Starter • Stand-alone Application • etc.
Slide 52
Slide 52 text
Spring Boot ͷಛ • Auto Configuration • Spring Boot Starter • Stand-alone Application
Slide 53
Slide 53 text
Auto Configuration • SpringΛ༻͢Δʹ༷ʑͳઃఆ͕ඞཁ • Spring Bootʹଟ͘ͷઃఆʢJava Configʣ ͕σϑΥϧτͰ༻ҙ͞Ε͍ͯΔ • @EnableAutoConfigurationΛ͚Δͱඞཁͳ ઃఆΛࣗಈͰಡΈࠐΜͰ͘ΕΔ
Slide 54
Slide 54 text
Spring Boot ͷಛ • Auto Configuration • Spring Boot Starter • Stand-alone Application
Slide 55
Slide 55 text
Spring Boot Starter • Spring BootʹඞཁͳϥΠϒϥϦΛ·ͱΊͯ ͘ΕΔStarterͱ͍͏Έ͕͋Δ • ґଘؔʹspring-boot-starter-xxxΛՃ͢Δ ͚ͩͰؔ࿈͢ΔϥΠϒϥϦΛ·ͱΊͯऔಘͯ͠ ͘ΕΔ
Slide 56
Slide 56 text
ࠓճ͏Starter • spring-boot-starter-web • webΞϓϦέʔγϣϯΛ࡞͢ΔͨΊ • spring-boot-starter-thymeleaf • Thymeleafͱ͍͏ViewςϯϓϨʔτΤϯδϯ Λར༻͢ΔͨΊ
Slide 57
Slide 57 text
Spring Boot ͷಛ • Auto Configuration • Spring Boot Starter • Stand-alone Application
Slide 58
Slide 58 text
Stand-alone Application • jarΛੜ͢ΔࡍʹΈࠐΈαʔόΛؚΜͰɹ ͘ΕΔͷͰ୯ମͰ࣮ߦՄೳ • warΛੜͯ͠αʔόʹσϓϩΠ͠ͳͯ͘ ࣮ߦͰ͖Δ
Slide 59
Slide 59 text
·ͱΊ
Slide 60
Slide 60 text
Spring & Spring Boot ·ͱΊ • ෳͷίϯϙʔωϯτʢSpring Core, Spring MVC, etc.ʣͷΈ߹ΘͤͰͰ͖͍ͯΔ • SpringͷࠜװDIʹ͋Γ • SpringΛΑΓखܰʹ͑ΔΑ͏ʹͨ͠ͷ͕ Spring Boot
Slide 61
Slide 61 text
ࢀߟࢿྉ
Slide 62
Slide 62 text
ࢀߟࢿྉʢWebʣ • Spring ެࣜαΠτ • https://spring.io/ • ॳΊͯͰ30Ͱ͔ΔSpring 5 & Spring Boot 2Φʔ όʔϏϡʔ • https://www.slideshare.net/ masatoshitada7/30spring-5-spring- boot-2-103523666
Slide 63
Slide 63 text
ࢀߟࢿྉʢॻ੶ʣ • Springపఈೖ