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Λ౉͢ ᶋ View͸ModelΛݩʹ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Λ౉͢ ᶋ View͸ModelΛݩʹ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పఈೖ໳