[Spring] Component Scan๊ณผ Function์ ์ฌ์ฉํ ๋น ๋ฑ๋ก ๋ฐฉ๋ฒ [Spring] Component Scan๊ณผ Function์ ์ฌ์ฉํ ๋น ๋ฑ๋ก ๋ฐฉ๋ฒ 1. @ComponentScan @ComponentScan ์ ๋ ธํ ์ด์ ์ spring 3.1๋ถํฐ ๋์ ๋์ผ๋ฉฐ ์ค์ ๋ ์์ ์ง์ ๋ถํฐ ์ปดํฌ๋ํธ ํด๋์ค๋ฅผ scanningํ์ฌ ๋น์ผ๋ก ๋ฑ๋กํด์ฃผ๋ ์ญํ ์ ํ๋ค. ์ปดํฌ๋ํธ ํด๋์ค๋ ๋ค์ ์ ๋ ธํ ์ด์ ์ด ๋ถ์ ํด๋์ค๋ฅผ ์๋ฏธํ๋ค. @Component @Repository @Service @Controller @Configuration @ComponentScan์ ๊ฐ์ฅ ์ค์ํ ๋ ๊ฐ์ง ์์ฑ์ component๋ฅผ scanํ ์์ ์ง์ ์ ์ค์ ํ๋ ์์ฑ๊ณผ scanํ component ์ค ๋น์ผ๋ก ๋ฑ๋กํ์ง ์์ ํด๋์ค๋ฅผ ์ ์ธํ๋ ํํฐ ์์ฑ์ด๋ค. 1) Scan ์์ ์ง์ ์ค์ - basePackages()์.. 2020. 3. 2. [Spring] @Autowired ๋์ ์๋ฆฌ - BeanPostProcessor [Spring] @Autowired ๋์ ์๋ฆฌ - BeanPostProcessor @Autowired ์ ๋ ธํ ์ด์ ์ ์์ฑ์, setter, ํ๋์ ๋ถ์ด๊ธฐ๋ง ํจ์ผ๋ก์จ ๊ฐํธํ๊ฒ ์์กด์ฑ์ ์ฃผ์ ๋ฐ์ ์ ์๋๋ฐ ์ด๋ป๊ฒ ๊ทธ๋ ๊ฒ ๋์ํ ์ ์๋์ง, ๊ทธ ์๋ฆฌ์ ๋ํด ์์๋ณด์. ๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด @Autowired ์ ๋ ธํ ์ด์ ์ BeanPostProcessor๋ผ๋ ๋ผ์ดํ ์ฌ์ดํด ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด์ธ AutowiredAnnotationBeanPostProcessor์ ์ํด ์์กด์ฑ ์ฃผ์ ์ด ์ด๋ฃจ์ด์ง๋ค. BeanPostProcessor๋ ๋น์ initializing(์ด๊ธฐํ) ๋ผ์ดํ ์ฌ์ดํด ์ด์ , ์ดํ์ ํ์ํ ๋ถ๊ฐ ์์ ์ ํ ์ ์๋ ๋ผ์ดํ ์ฌ์ดํด ์ฝ๋ฐฑ์ด๋ค. ๊ทธ๋ฆฌ๊ณ BeanPostProcessor์ ๊ตฌํ์ฒด์ธ AutowiredAnno.. 2020. 3. 1. [Spring] @Autowired์ ๋ค์ํ ์ฌ์ฉ ๋ฐฉ๋ฒ - required, Primary, Qualifier [Spring] @Autowired์ ๋ค์ํ ์ฌ์ฉ ๋ฐฉ๋ฒ - required, Primary, Qualifier 1. ์์กด๊ฐ์ฒด ํ์ ์ ๋น์ด ์๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด BookService ํด๋์ค์ BookRepository ์ธํฐํ์ด์ค๊ฐ ์๋ค. import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class BookService { BookRepository bookRepository; @Autowired public BookService(BookRepository bookRepository) { this.bookRepository = boo.. 2020. 3. 1. [Spring] ๋น์ ์ค์ ํ๋ 3๊ฐ์ง ๋ฐฉ๋ฒ - XML, JAVA, Component Scan [Spring] ๋น์ ์ค์ ํ๋ 3๊ฐ์ง ๋ฐฉ๋ฒ - XML, JAVA, Component Scan ์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ค. ์์ ์ฝ๋์ ํ์ํ ์์กด์ฑ์ ๋ฐ๊ธฐ ์ํด spring boot ํ๋ก์ ํธ๋ฅผ ์์ฑํ ๊ฒ์ด๋ค. ์ฐธ๊ณ ๋ก ์์ ์ฝ๋์๋ ์ด ์์กด์ฑ์ด ํ์ํ๋ค. Spring Initializr๋ฅผ ์ ํํ๊ณ Next๋ฅผ ํด๋ฆญํ๋ค. Group, Artifact, Name์ ์ ๋ ฅํ๊ณ Next๋ฅผ ํด๋ฆญํ๋ค. Group์ ํจํค์ง๋ช ์ ์ ์ด์ค๋ค. (๋ณดํต ๋๋ฉ์ธ๋ช ์ ๋ค์ง์ด์..) Web - Spring Web์ ๋ฃ๊ณ Next๋ฅผ ํด๋ฆญํ๋ค. Finish๋ฅผ ํด๋ฆญํด์ ์ ๊ท ํ๋ก์ ํธ ์์ฑ์ ์๋ฃํ๋ค. Spring boot ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์๋ค. pom.xml์ ์ด์ด๋ณด๋ฉด spring boot 2.2.5 ๋ฒ์ ์ผ๋ก ๋ง๋ค์ด์ก์์ ํ์ธํ ์ ์๋ค. ์ฐ์ธก์.. 2020. 3. 1. [Spring] ์ ์๋ฐ ๊ฐ์ฒด๋ฅผ IoC ์ปจํ ์ด๋์ ๋น์ผ๋ก ๋ง๋ค๊น? [Spring] ์ ์๋ฐ ๊ฐ์ฒด๋ฅผ IoC ์ปจํ ์ด๋์ ๋น์ผ๋ก ๋ง๋ค๊น? IoC๋ spring์ ํตํด์๋ง ์ ์ฉํ ์ ์๋๊ฒ ์๋๋ฉฐ ์ผ๋ฐ ์๋ฐ ๊ฐ์ฒด๋ก DI๋ฅผ ์ง์ ๊ตฌํํ ์๋ ์๋ค. ๊ทธ๋ฐ๋ฐ๋ spring์ IoC ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค. DI(Dependency Injection, ์์กด์ฑ ์ฃผ์ ) DI๋ฅผ ์ง์ ๊ตฌํํ๋ ๊ฒ ๋ณด๋ค spring์์ ์ ๊ณตํ๋ IoC ์ปจํ ์ด๋์ DI๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด ํธ๋ฆฌํ๊ณ ํจ์จ์ ์ด๋ค. ๊ฐ์ฒด์ Scope ์๋ฐ ๊ฐ์ฒด๋ฅผ IoC ์ปจํ ์ด๋์ ๋น์ผ๋ก ๋ง๋ค๋ฉด ๊ฐ์ฒด์ scope๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ฉ์ดํ๋ค. IoC ์ปจํ ์ด๋์์ ๊ด๋ฆฌ๋๋ ๋น๋ค์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๊ธํค scope๋ก ๋ฑ๋ก๋๋ค. ๋ฐ๋ผ์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ์ผ๋ก ์ค๋ก์ง ํ๋์ ์ธ์คํด์ค๋ง ์ฌ์ฉํด๋ ๋๋ ๊ฐ์ฒด๋ผ๋ฉด IoC ์ปจํ ์ด๋์ ๋น์ผ๋ก ๋ฑ๋กํด์ ์.. 2020. 3. 1. [Spring] ์คํ๋ง PSA [Spring] ์คํ๋ง PSA 1. PSA(Portable Service Abstraction) Spring์ Spring Triangle์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์ธ ๊ฐ์ง ๊ฐ๋ ์ ์ ๊ณตํด์ค๋ค. ๊ฐ๊ฐ IoC, AOP, PSA๋ฅผ ์ผ์ปซ๋๋ค. Spring์ PetClinic ์์ ๋ฅผ ๋ณด๋ฉด ์๋ธ๋ฆฟ ์ดํ๋ฆฌ์ผ์ด์ ์์๋ ๋ถ๊ตฌํ๊ณ ์๋ธ๋ฆฟ์ด ์ ํ ์กด์ฌํ์ง ์๋๋ค. ๋จ์ง @Controller ์ ๋ ธํ ์ด์ ์ด ๋ถ์ด์๋ ํด๋์ค์์ @GetMapping, @PostMapping๊ณผ ๊ฐ์ @RequestMapping ์ ๋ ธํ ์ด์ ์ ์ฌ์ฉํด์ ์์ฒญ์ ๋งคํํ๋ค. ์ค์ ๋ก๋ ๋ด๋ถ์ ์ผ๋ก ์๋ธ๋ฆฟ ๊ธฐ๋ฐ์ผ๋ก ์ฝ๋๊ฐ ๋์ํ์ง๋ง ์๋ธ๋ฆฟ ๊ธฐ์ ์ ์ถ์ํ ๊ณ์ธต์ ์ํด ์จ๊ฒจ์ ธ ์๋ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ์ถ์ํ ๊ณ์ธต์ ์ฌ์ฉํด์ ์ด๋ค ๊ธฐ์ ์ ๋ด๋ถ์ ์จ๊ธฐ๊ณ ๊ฐ๋ฐ์์๊ฒ ํธ์์ฑ์ ์ ๊ณตํด์ฃผ๋ .. 2020. 3. 1. [Spring] ์คํ๋ง AOP ๊ฐ๋ ์ดํด ๋ฐ ์ ์ฉ ๋ฐฉ๋ฒ [Spring] ์คํ๋ง AOP ๊ฐ๋ ์ดํด ๋ฐ ์ ์ฉ ๋ฐฉ๋ฒ 1. AOP(Aspect Oriented Programming) Spring์ Spring Triangle์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์ธ ๊ฐ์ง ๊ฐ๋ ์ ์ ๊ณตํด์ค๋ค. ๊ฐ๊ฐ IoC, AOP, PSA๋ฅผ ์ผ์ปซ๋๋ค. AOP๋ Aspect Oriented Programming์ ์ฝ์๋ก '์ธก๋ฉด/์์ ์งํฅ์ ์ธ ํ๋ก๊ทธ๋๋ฐ'์ด๋ผ๋ ์๋ฏธ์ด๋ค. '์ธก๋ฉด/์์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ'์ด ๋ฌด์์ ์๋ฏธํ๋๊ฐ? class A { method a() { AAAA method a๊ฐ ํ๋ ์ผ๋ค BBBB } method b() { AAAA method b๊ฐ ํ๋ ์ผ๋ค BBBB } } class B { method c() { AAAA method c๊ฐ ํ๋ ์ผ๋ค BBBB } } cs ์์ ๊ฐ์ด ๋์ผํ ์ผ์ ํ๋.. 2020. 2. 29. [Spring] ์์กด์ฑ ์ฃผ์ (DI, Dependency Injection)์ ์ธ๊ฐ์ง ๋ฐฉ๋ฒ [Spring] ์์กด์ฑ ์ฃผ์ (DI, Dependency Injection)์ ์ธ๊ฐ์ง ๋ฐฉ๋ฒ Spring์ @Autowired ์ ๋ ธํ ์ด์ ์ ์ด์ฉํ ๋ค์ํ ์์กด์ฑ ์ฃผ์ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค. @Autowired ์ ๋ ธํ ์ด์ ์ Spring์๊ฒ ์์กด์ฑ์ ์ฃผ์ ํ๋ผ๋ ์ง์์ ์ญํ ๋ก ์ฐ์ด๋๋ฐ ์์ฑ์, ํ๋, ์ธํฐ์ ๋ถ์ผ ์ ์๋ค. ๐จ Spring IoC ์ปจํ ์ด๋์ ์ํ ์์กด์ฑ ์ฃผ์ ์ ๋น(Bean) ๋ผ๋ฆฌ๋ง ๊ฐ๋ฅํ๋ค. 1. ์์ฑ์ ์ฃผ์ 1 2 3 4 5 6 7 8 9 @Component public class SampleController { private SampleRepository sampleRepository; @Autowired public SampleController(SampleRepository sampleRepo.. 2020. 2. 28. IntelliJ์์ Maven ํ๋ก์ ํธ Package Build ํ๊ธฐ IntelliJ์์ Maven ํ๋ก์ ํธ Package Build ํ๊ธฐ Maven ๋ทฐ์์ build๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ๊ณผ terminal์ ์ด์ด maven ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ ๋ฐฉ๋ฒ์ด ์๋ค. 1. Maven ๋ทฐ์์ Build ์คํ ์ฐ์ธก์ Maven์ ํด๋ฆญํ์ฌ maven ๋ทฐ๋ฅผ ์ด๊ณ Lifecycle - package๋ฅผ ๋๋ธํด๋ฆญ ํ๋ค. 2. Terminal ๋ช ๋ น์ด ์ ๋ ฅ ํ๋จ์ Terminal์ ํด๋ฆญํ์ฌ terminal ๋ทฐ๋ฅผ ์ด๋ฉด ํ์ฌ ํ๋ก์ ํธ์ ๋๋ ํ ๋ฆฌ ์์น์์ ํฐ๋ฏธ๋์ด ์ด๋ฆฐ๋ค. ํ๋กฌํํธ์ mvnw package๋ฅผ ์ ๋ ฅํ๋ค. 3. ๋น๋ ๊ฒฐ๊ณผ Build ๋ก๊ทธ์์ package build ๊ฒฐ๊ณผ ํ์ผ๋ช ๊ณผ ์์น๋ฅผ ํ์ธํ ์ ์๋ค. 2020. 2. 28. [Spring] ์คํ๋ง ๋น(Bean)์ ๊ฐ๋ ๊ณผ ์์ฑ ์๋ฆฌ [Spring] ์คํ๋ง ๋น(Bean)์ ๊ฐ๋ ๊ณผ ์์ฑ ์๋ฆฌ ๋น(Bean) Spring IoC ์ปจํ ์ด๋๊ฐ ๊ด๋ฆฌํ๋ ์๋ฐ ๊ฐ์ฒด๋ฅผ ๋น(Bean)์ด๋ผ๋ ์ฉ์ด๋ก ๋ถ๋ฅธ๋ค. ์ฐ๋ฆฌ๊ฐ new ์ฐ์ฐ์๋ก ์ด๋ค ๊ฐ์ฒด๋ฅผ ์์ฑํ์ ๋ ๊ทธ ๊ฐ์ฒด๋ ๋น์ด ์๋๋ค. ApplicationContext.getBean()์ผ๋ก ์ป์ด์ง ์ ์๋ ๊ฐ์ฒด๋ ๋น์ด๋ค. ์ฆ Spring์์์ ๋น์ ApplicationContext๊ฐ ์๊ณ ์๋ ๊ฐ์ฒด, ์ฆ ApplicationContext๊ฐ ๋ง๋ค์ด์ ๊ทธ ์์ ๋ด๊ณ ์๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค. ์ด๋ป๊ฒ Spring IoC ์ปจํ ์ด๋์ ๋น์ ๋ฑ๋กํ ๊น? ๋น์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ค์ํ์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ํฌ๊ฒ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค. โ Component Scanning โก ๋น ์ค์ ํ์ผ์ ์ง์ ๋น์ ๋ฑ๋ก Component Scan @Comp.. 2020. 2. 28. [Spring] ์คํ๋ง ์์ PetClinic ํ๋ก์ ํธ ๋ถ์ ๋ฐ ๊ธฐ๋ฅ ๋ณ๊ฒฝ [Spring] ์คํ๋ง ์์ PetClinic ํ๋ก์ ํธ ๋ถ์ ๋ฐ ๊ธฐ๋ฅ ๋ณ๊ฒฝ 1. ํ๋ก์ ํธ ๋ก๊ทธ ๋ ๋ฒจ ๋ณ๊ฒฝ ๋ก๊ทธ๋ฅผ ํตํด ํ๋ก์ ํธ์ ์คํ ํ๋ฆ์ ์ดํด๋ณผ ์ ์๋ค. PetClinic ํ๋ก์ ํธ๋ ๊ธฐ๋ณธ ๋ก๊ทธ ๋ ๋ฒจ์ด INFO๋ก ๋์ด์์ด์ ์์ธํ ๋ก๊ทธ๋ฅผ ํ์ธํ ์ ์๋ค. ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ด๊ฒ์ ๊ฒ ๋๋ฌ๋ด๋ ๋ฑํ ์ถ๋ ฅ๋๋ ๋ก๊ทธ๊ฐ ์๋ค. ๋ก๊ทธ ๋ ๋ฒจ์ DEBUG๋ก ๋ณ๊ฒฝํ์. Spring boot ํ๋ก์ ํธ๋ src/main/resources/application.properties ํ์ผ์ ๋ก๊ทธ ๋ ๋ฒจ์ ์ค์ ํ๋ค. application.properties 1 2 3 # Logging #logging.level.org.springframework=INFO logging.level.org.springframework.web=DEBU.. 2020. 2. 28. [Spring] ์คํ๋ง ์์ ํ๋ก์ ํธ PetClinic ๋น๋ ๋ฐ ์คํํ๊ธฐ [Spring] ์คํ๋ง ์์ ํ๋ก์ ํธ PetClinic ๋น๋ ๋ฐ ์คํํ๊ธฐ 1. GitHub์์ Spring ํ๋ก์ ํธ clone ๋ฐ๊ธฐ Spring์ ๊ณต์ ์์ ์ธ spring-petclinic์ ์ฌ์ฉํ๋ค. Clone๋ฐ๊ธฐ ์ํด https://github.com/spring-projects/spring-petclinic ์ ์ ์ํ๋ค. Clone or download๋ฅผ ํด๋ฆญํ๊ณ ํด๋ฆฝ๋ณด๋์ ์นดํผํ๋ ๋ฒํผ์ ํด๋ฆญํ๋ค. IntelliJ ๋ฉ์ธ ๋ฉ๋ด์์ VCS - Get from Version Control...์ ํด๋ฆญํ๋ค. ๋ณต์ฌํ github url์ ์ ๋ ฅํ๋ค. ๋๋ ํ ๋ฆฌ๋ ๋ ํ์งํ ๋ฆฌ ์ด๋ฆ์ธ spring-petclinic์ผ๋ก ์๋์ผ๋ก ์ง์ ๋๋ค. ๋ณ๊ฒฝ์ด ํ์ํ๋ฉด ๋ณ๊ฒฝ ํ Clone์ ํด๋ฆญํ๋ค. spring-petclinic.. 2020. 2. 27. ์ด์ 1 ยทยทยท 6 7 8 9 10 11 12 ยทยทยท 17 ๋ค์