[Spring] EnvironmentCapable - Property ์ฌ์ฉํ๊ธฐ ๊ด๋ จ ๊ธ - JAVA ์น ํ๋ก์ ํธ์์ Properties ํ์ผ ํ์ฉํ๊ธฐ - [Spring] EnvironmentCapable - Profile ์ฌ์ฉํ๊ธฐ [Spring] EnvironmentCapable - Property ์ฌ์ฉํ๊ธฐ ApplicationContext๋ EnvironmentCapable์ ์์๋ฐ์ผ๋ฉฐ, EnvironmentCapable์ด ์ ๊ณตํ๋ ์ฃผ์ ๊ธฐ๋ฅ์๋ profile๊ณผ property๊ฐ ์๋ค. ๋ณธ ํฌ์คํ ์์๋ ๊ทธ ์ค property์ ๋ํด ์ดํด๋ณธ๋ค. 1. Property ๊ธฐ๋ฅ ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋๋ ์ฌ๋ฌ๊ฐ์ง key, value ์์ผ๋ก ์ ๊ณต๋๋ ํ๋กํผํฐ์ ๊ฐํธํ๊ฒ ์ ๊ทผํ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค. Spring์ ํ๋กํผํฐ์ '๊ณ์ธตํ'์ผ๋ก ์ ๊ทผํ๋๋ฐ ๊ณ์ธตํ์ผ๋ก ์ ๊ทผํ๋ค๋ ๋ง์ ํ๋กํผํฐ์ ์ฐ์ ์์๊ฐ.. 2020. 3. 4. [Spring] EnvironmentCapable - Profile ์ฌ์ฉํ๊ธฐ [Spring] EnvironmentCapable - Profile ์ฌ์ฉํ๊ธฐ Spring์ ApplicationContext๋ BeanFactory ๊ธฐ๋ฅ๋ง ํ๋๊ฑด ์๋๋ค. ApplicationContext๊ฐ ์์๋ฐ๋ ๋ค์ํ ์ธํฐํ์ด์ค๋ค ์ค EnvironmentCapable ์ธํฐํ์ด์ค๋ 'Profile(ํ๋กํ์ผ)' ์ด๋ผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. Profile(ํ๋กํ์ผ)์ ๊ฐ๋ ํ๋กํ์ผ = ๋น๋ค์ ๋ฌถ์ ํ๋กํ์ผ์ ํน์ ์คํ ํ๊ฒฝ์์ ์ฌ์ฉํ ๋น๋ค์ ๋ฌถ์์ด๋ค. ํ ์คํธ ํ๊ฒฝ์์ ์ฌ์ฉํ ๋น ๋ฌถ์๊ณผ ํ๋ก๋์ (์ด์) ํ๊ฒฝ์์ ์ฌ์ฉํ ๋น ๋ฌถ์์ด ์๋ก ๋ค๋ฅผ ์ ์๋ค. ๋ ๊ฐ ํ๊ฒฝ์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ๋น๋ค์ ์จ์ผํ๋ ๊ฒฝ์ฐ, ํน์ ํ๊ฒฝ์์๋ง ๋ฑ๋กํด์ผํ๋ ๋น๋ค์ด ์๋ ๊ฒฝ์ฐ๊ฐ ์์ ์ ์๋ค. ํ๋กํ์ผ์ ๊ทธ๋ฌํ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ ์ ์๋.. 2020. 3. 4. [Spring] ๋น์ Scope - ์ฑ๊ธํค๊ณผ ํ๋กํ ํ์ [Spring] ๋น์ Scope - ์ฑ๊ธํค๊ณผ ํ๋กํ ํ์ ๋น์ ๋ฑ๋กํ ๋ ์๋ฌด๋ฐ ์ค์ ์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋น์ ์ฑ๊ธํค scope์ ๊ฐ๋๋ค. ์ฑ๊ธํค scope์ด๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ๊ฑธ์ณ ํด๋น ๋น์ ์ธ์คํด์ค๋ฅผ ์ค์ง ํ๋๋ง ์์ฑํด์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. 1. Singleton Scope Single, Proto ํด๋์ค๋ฅผ ์๋ก ๋ง๋ค๊ณ @Component๋ฅผ ๋ถ์ฌ ๋น์ผ๋ก ๋ฑ๋กํ๋ค. Single.java 1 2 3 4 5 6 7 8 9 10 11 12 13 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class Single { @.. 2020. 3. 3. [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. [Spring] ์คํ๋ง ๋น(Bean)์ ๊ฐ๋ ๊ณผ ์์ฑ ์๋ฆฌ [Spring] ์คํ๋ง ๋น(Bean)์ ๊ฐ๋ ๊ณผ ์์ฑ ์๋ฆฌ ๋น(Bean) Spring IoC ์ปจํ ์ด๋๊ฐ ๊ด๋ฆฌํ๋ ์๋ฐ ๊ฐ์ฒด๋ฅผ ๋น(Bean)์ด๋ผ๋ ์ฉ์ด๋ก ๋ถ๋ฅธ๋ค. ์ฐ๋ฆฌ๊ฐ new ์ฐ์ฐ์๋ก ์ด๋ค ๊ฐ์ฒด๋ฅผ ์์ฑํ์ ๋ ๊ทธ ๊ฐ์ฒด๋ ๋น์ด ์๋๋ค. ApplicationContext.getBean()์ผ๋ก ์ป์ด์ง ์ ์๋ ๊ฐ์ฒด๋ ๋น์ด๋ค. ์ฆ Spring์์์ ๋น์ ApplicationContext๊ฐ ์๊ณ ์๋ ๊ฐ์ฒด, ์ฆ ApplicationContext๊ฐ ๋ง๋ค์ด์ ๊ทธ ์์ ๋ด๊ณ ์๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค. ์ด๋ป๊ฒ Spring IoC ์ปจํ ์ด๋์ ๋น์ ๋ฑ๋กํ ๊น? ๋น์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ค์ํ์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ํฌ๊ฒ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค. โ Component Scanning โก ๋น ์ค์ ํ์ผ์ ์ง์ ๋น์ ๋ฑ๋ก Component Scan @Comp.. 2020. 2. 28. ์ด์ 1 2 3 4 5 ๋ค์