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పఈೖ໳