Spring(64)
-
Spring AOP(Aspect Oriented Programming) ๊ฐ๋ ๋ฐ ์ฉ์ด, AspectJ, Spring AOP ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
1. Spring AOP 1๏ธโฃ ํต์ฌ๊ธฐ๋ฅ๊ณผ ๋ถ๊ฐ๊ธฐ๋ฅ ํต์ฌ ๊ธฐ๋ฅ์ ์ ๋ฌด ๋ก์ง์ ํฌํจํ๋ ๊ธฐ๋ฅ์ด๊ณ , ๋ถ๊ฐ ๊ฐ๋ฅ์ ํต์ฌ ๊ธฐ๋ฅ์ ๋์์ฃผ๋ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ(๋ก๊น , ๋ณด์ ๋ฑ)์ ๋ถ๊ฐ๊ธฐ๋ฅ(cross-cutting Concerns)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. 2๏ธโฃ AOP(Aspect Oriented Programming) AOP๋ ์ ํ๋ฆฌ์ผ์ด์ ์์์ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ, ์ฆ ํต์ฌ์ ์ธ ๊ธฐ๋ฅ์์ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ๋ค. ๋ฐ๋ผ์ AOP์ ๋ชฉ์ ์ ํ๋ก๊ทธ๋๋จธ๋ค์ ์ผ๋ ์ฌํญ์ ๋ณ๋์ ๊ด์ฌ์ฌ(Aspect)๋ก ๋ถ๋ฆฌํ์ฌ ์ฝ๋ ๊ฐ๋ฐํ ๋ ํต์ฌ ๊ธฐ๋ฅ์ ๋ ์ง์คํ ์ ์๋๋ก ํด์ฃผ๋ ๊ฒ์ด๋ค! => Separation of Cross-Cutting Concern 2. Spring AOP ์ฉ์ด 1๏ธโฃ Aspect : Aspect๋ ๋ถ๊ฐ ๊ธฐ๋ฅ์ ์ ์ํ ์ฝ๋์ธ Ad..
2021.11.15 -
Spring JDBC [3] ๊ฐ๋จํ ์ฌ์ฉ์ ๊ด๋ฆฌ ํ๋ก์ ํธ
https://hyejin.tistory.com/250 Spring JDBC [1] DAO ํจํด์ด๋?, DataSource, JDBC, jdbcTemplate ํด๋์ค 1. DAO(Data Access Object) ํจํด ๋ฐ์ดํฐ ์ก์ธ์ค ๊ณ์ธต์ DAO ํจํด์ ์ ์ฉํ์ฌ ๋น์ง๋์ค ๋ก์ง๊ณผ ๋ฐ์ดํฐ ์ก์ธ์ค ๋ก์ง์ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์์น์ด๋ผ๊ณ ํ๋ค. DAO ํจํด์ ์๋น์ค ๊ณ์ธต์ ์ํฅ์ ์ฃผ์ง ์์ผ๋ฉด์ ๋ฐ hyejin.tistory.com https://hyejin.tistory.com/251 Spring JDBC [2] SPRING JDBC ํ๊ฒฝ์ค์ ํ๊ธฐ (Oracle JDBC ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น, Spring JDBC ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น, DataSour 1. DB ๊ณ์ ๋ฐ ํ ์ด๋ธ ์์ฑํ๊ธฐ 1๏ธโฃ ๊ด๋ฆฌ์๋ก ๋ก๊ทธ์ธํ์ฌ scott์ด๋ผ..
2021.11.12 -
Spring JDBC [2] SPRING JDBC ํ๊ฒฝ์ค์ ํ๊ธฐ (Oracle JDBC ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น, Spring JDBC ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น, DataSource ์์ฑ)
1. DB ๊ณ์ ๋ฐ ํ ์ด๋ธ ์์ฑํ๊ธฐ 1๏ธโฃ ๊ด๋ฆฌ์๋ก ๋ก๊ทธ์ธํ์ฌ scott์ด๋ผ๋ ๊ณ์ ์์ฑํ๊ธฐ 2๏ธโฃ scott์ด๋ผ๋ ๊ณ์ ์ ๊ถํ ๋ถ์ฌํด์ฃผ๊ธฐ 3๏ธโฃ ํ ์ด๋ธ ์์ฑํ๊ธฐ 4๏ธโฃ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์ฝ์ ํ commit ํ๊ธฐ 5๏ธโฃ USERS ํ ์ด๋ธ ๋ฐ์ดํฐ ์กฐํํด๋ณด๊ธฐ 2. Oracle JDBC ๋ผ์ด๋ธ๋ฌ๋ฆฌ pom.xml์ ์ค์นํ๊ธฐ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ Oracle ์ฌ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ Oracle ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ ๊ฒ์ด๋ค. https://mvnrepository.com/artifact/oracle/ojdbc6/11.2.0.3 pom.xml ์ ์ถ๊ฐํ๋ค. 3. Spring JDBC ์ค์นํ๊ธฐ https://mvnrepository.com/artifact/org.springframework/spring-jdbc/5.2.17..
2021.11.11 -
Spring JDBC [1] DAO ํจํด์ด๋?, DataSource, JDBC, jdbcTemplate ํด๋์ค
1. DAO(Data Access Object) ํจํด ๋ฐ์ดํฐ ์ก์ธ์ค ๊ณ์ธต์ DAO ํจํด์ ์ ์ฉํ์ฌ ๋น์ง๋์ค ๋ก์ง๊ณผ ๋ฐ์ดํฐ ์ก์ธ์ค ๋ก์ง์ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์์น์ด๋ผ๊ณ ํ๋ค. DAO ํจํด์ ์๋น์ค ๊ณ์ธต์ ์ํฅ์ ์ฃผ์ง ์์ผ๋ฉด์ ๋ฐ์ดํฐ ์ก์ธ์ค ๊ธฐ์ ์ ๋ณ๊ฒฝํ ์ ์๋ค๋ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๋ค. 2. DataSource DataSource๋ ์ปจ๋ฅ์ ํ๋ง์ ์ง์ํ๋ค. ๋ค์ค ์ฌ์ฉ์๋ฅผ ๊ฐ๋ ์ํฐํ๋ผ์ด์ฆ ์์คํ ์ด๋ผ๋ฉด ๋ฐ๋์ DB ์ปค๋ฅ์ ํ๋ง ๊ธฐ๋ฅ์ ์ง์ํ๋ DataSource๋ฅผ ์ฌ์ฉํด์ผํ๋ค. -> Spring ์์๋ DataSource๋ฅผ ๊ณต์ ๊ฐ๋ฅํ Spring Bean์ผ๋ก ๋ฑ๋กํด์ฃผ์ด ์ฌ์ฉํ ์ ์๋๋ก ํด์ค๋ค. โ ์ปจ๋ฅ์ ํ๋ง์ด๋? ์ปจ๋ฅ์ ํ๋ง์ ๋ฏธ๋ฆฌ ์ ํด์ง ๊ฐ์๋งํผ์ DB์ปค๋ฅ์ ํ(pool)์ ์ค๋นํด๋๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ฒญํ ..
2021.11.11 -
Spring 3๊ฐ์ง ๊ณ์ธต ๊ตฌ์กฐ (ํ๋ฆฌ์ ํ ์ด์ ๊ณ์ธต, ์๋น์ค ๊ณ์ธต, ๋ฐ์ดํฐ์ก์ธ์ค ๊ณ์ธต)
1. Spring ๊ธฐ๋ณธ 3๊ฐ์ง ๊ณ์ธต ๋๋ถ๋ถ ํจ์จ์ ์ธ ๊ฐ๋ฐ์ ํ๊ธฐ ์ํด์ ๊ณ์ธตํํ์ฌ ๊ฐ๋ฐํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค. ๊ธฐ๋ณธ์ ์ธ ๊ณ์ธต์ผ๋ก๋ ํ๋ฆฌ์ ํ ์ด์ ๊ณ์ธต(Presentation Layer), ์๋น์ค ๊ณ์ธต(Service Layer), ๋ฐ์ดํฐ์ก์ธ์ค ๊ณ์ธต(Data Access Layer) 3๊ฐ์ง ๊ณ์ธต๊ณผ ๋ชจ๋ ๊ณ์ธต์์ ์ฌ์ฉ๋๋ ๋๋ฉ์ธ ๋ชจ๋ธ ํด๋์ค๋ก ๊ตฌ์ฑ๋์ด ์๋ค, ๊ฐ๊ฐ์ ๊ณ์ธต์ ๊ณ์ธต๋ง๋ค ๋ ๋ฆฝ์ ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ๊ตฌํํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ผํ๊ณ , ๊ฐ ๊ณ์ธต์์ ๋ด๋นํด์ผํ ๊ธฐ๋ฅ๋ค์ด ์๋ค. ์์ ์ธ๊ฐ์ง ๊ณ์ธต๋ค์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ถ๋ฆฌํ ์ ์๋๋ก ๊ตฌํํด์ผํ๊ณ , ์ผ๋ฐ์ ์ผ๋ก ๊ฐ ๊ณ์ธต ์ฌ์ด์๋ ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํ์ฌ ํต์ ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค. 1๏ธโฃ ํ๋ฆฌ์ ํ ์ด์ ๊ณ์ธต (Presentation Layer) ํ๋ฆฌ์ ํ ์ด์ ๊ณ์ธต์ ๋ธ๋ผ์ฐ์ ์์ ์น ํด๋ผ์ด์ธํธ..
2021.11.10 -
Spring javax.annotation.resource ์ค๋ฅ (@Resource ์์ฑ ์๋ฌ)
์ด๋ ธํ ์ด์ ์ ์ด์ฉํด์ Bean ์ค์ ์ ํ๊ณ ์๋๋ฐ @Resource ์ด๋ ธํ ์ด์ ์ด ์์ฑ์ด ์๋๋ ์๋ฌ๊ฐ ์์๋ค. ๊ฒฐ๋ก ์ javax.annotation ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค. https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api ์ด ๋งํฌ ๊ทธ๋๋ก ๋ค์ด๊ฐ์ pom.xml ์ ์ถ๊ฐํ๊ณ maven update ํด์คฌ๋๋ @Resource๊ฐ ์ ์์ฑ๋๋ค ใ ใ
2021.11.09 -
Spring Bean๋ฑ๋ก ๋ฉํ์ ๋ณด ์ค์ , Bean ๋ฑ๋ก annotation(@Component, @Repository, @Service, @Controller) , Bean ์์กด๊ด๊ณ ์ฃผ์ annotation (@Autowired, @Resource, @Value, @Quailfier), ํ๋กํผํฐ ํ์ผ์ ์ด์ฉํ ์ค์
1. Bean ๋ฑ๋ก ๋ฉํ์ ๋ณด ๊ตฌ์ฑ 1๏ธโฃ XML ๋จ๋ ์ฌ์ฉ ์ง๊ธ๊น์ง ์ฌ์ฉํด์๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ชจ๋ Bean์ XML์ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ์ด๋ค. -> ์ด ๋ฐฉ๋ฒ์ ๋ชจ๋ Bean์ XML ์์ ํ์ธํ ์ ์์ง๋ง Bean ๊ฐ์๊ฐ ๋ง์์ง๋ฉด xml ํ์ผ์ ๊ด๋ฆฌํ๊ธฐ ์ ์ ์ด๋ ค์์ง๋ค. -> ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค๊ณผ ๊ณตํต์ผ๋ก ํด๋น ์ค์ ํ์ผ์ ๊ณต์ ํด์ ๊ฐ๋ฐํ๋ค๋ฉด ์ค์ ํ์ผ์ ๋์์ ์์ ํ๋ค๊ฐ ์ถฉ๋์ด ์ผ์ด๋๋ ์ํ์ด ์๊ธธ ์๋ ์๋ค. -> DI ์ ํ์ํ Setter ๋ฉ์๋์ Constructor ๊ฐ ์ฝ๋ ๋ด์ ๋ฐ๋์ ์กด์ฌํด์ผํ๋ค. 2๏ธโฃ XML๊ณผ ๋น ์ค์บ๋(Bean Scanning) ์ ํผ์ฉ Bean์ผ๋ก ์ฌ์ฉ๋ ํด๋์ค์ ํน๋ณํ annotation์ ๋ถ์ฌํด์ฃผ๋ฉด ์ด๋ฐ ํด๋์ค๋ฅผ ์๋์ผ๋ก ์ฐพ์์ Bean์ผ๋ก ๋ฑ๋กํด์ค๋ค. ํน์ annotation์ด..
2021.11.09 -
Spring Bean ์์กด๊ด๊ณ, ํ๋กํผํฐ ๊ฐ ์ค์ , ํ๋กํผํฐ ํ์ผ์ ์ด์ฉํ ๊ฐ ์ค์ ํ๊ธฐ
1. Bean ์์กด๊ด๊ณ ์ค์ 1๏ธโฃ Setter Injection Setter ๋ฉ์๋๋ฅผ ํตํด ์์กด๊ด๊ณ๊ฐ ์๋ Bean์ ์ฃผ์ ํ๊ธฐ ์ํด์๋ ํ๊ทธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ์ด๋ ref ์์ฑ์ Bean ์ด๋ฆ์ ์ด์ฉํด ์ฃผ์ ํ Bean์ ์ฐพ๊ณ , value ์์ฑ์ ๋จ์ ๊ฐ ๋๋ Bean์ด ์๋ ๊ฐ์ฒด๋ฅผ ์ฃผ์ ํ ๋ ์ฌ์ฉํ๋ค. Hello ํด๋์ค์ setter ๋ฉ์๋๋ฅผ ํตํด Bean ์ฃผ์ ํ ๋ property ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค. ์ด๋ setName์ String์ด๊ธฐ ๋๋ฌธ์ ๋จ์ ๊ฐ์ ๋ฃ์ด์ฃผ๊ธฐ ์ํด value์์ฑ์ผ๋ก ์ค์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ setPrinter์ Printer๋ผ๋ Bean์ ์ฃผ์ ํด์ค์ผํ๊ธฐ ๋๋ฌธ์ ref ์์ฑ์ผ๋ก ์ค์ ํ๋ค. 2๏ธโฃ Constructor Injection Constructor(์์ฑ์)๋ฅผ ํตํด ์์กด๊ด๊ณ๊ฐ ์๋ ..
2021.11.09 -
Spring DI ์ ํ๋ฆฌ์ผ์ด์ Spring-Testํ ์คํธ ํด๋์ค ์์ฑํ๊ธฐ
https://hyejin.tistory.com/243?category=1022293 [Spring] DI ์ ํ๋ฆฌ์ผ์ด์ Junit ํ ์คํธ ํด๋์ค ์์ฑํ๊ธฐ 1. Junit Junit์ ๋จ์ํ ์คํธ ํ๋ ์์ํฌ์ด๋ค. Junit์ @Test ๋ฉ์๋๊ฐ ๊ฐ๊ฐ ํธ์ถ๋ ๋ ๋ง๋ค ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ ๋ ๋ฆฝ์ ์ธ ํ ์คํธ๊ฐ ์ด๋ฃจ์ด์ง๋๋ก ํ๋ค. โ ๋จ์ํ ์คํธ๋? ๋ชจ๋ ํจ์์ ๋ฉ์๋ hyejin.tistory.com ์ ๊ธ์ Junit ํ ์คํธ ํด๋์ค๋ฅผ ์์ฑํด์ ์คํํด๋ดค๋ค. ์ด๋ฒ์๋ ๋ ๋์๊ฐ Sprint-Test๋ฅผ ์ฌ์ฉํด DI ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ ํด๋์ค๋ฅผ ์์ฑํ ๊ฒ์ด๋ค. 1. Sprint-test ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์นํ๊ธฐ https://mvnrepository.com/artifact/org.springframework/spring-..
2021.11.09 -
Spring DI ์ ํ๋ฆฌ์ผ์ด์ Junit ํ ์คํธ ํด๋์ค ์์ฑํ๊ธฐ
1. Junit Junit์ ๋จ์ํ ์คํธ ํ๋ ์์ํฌ์ด๋ค. Junit์ @Test ๋ฉ์๋๊ฐ ๊ฐ๊ฐ ํธ์ถ๋ ๋ ๋ง๋ค ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ ๋ ๋ฆฝ์ ์ธ ํ ์คํธ๊ฐ ์ด๋ฃจ์ด์ง๋๋ก ํ๋ค. โ ๋จ์ํ ์คํธ๋? ๋ชจ๋ ํจ์์ ๋ฉ์๋์ ๋ํ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๋ ์ ์ฐจ๋ฅผ ์๋ฏธํ๋ค. 2. Junit ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น https://mvnrepository.com/artifact/junit/junit ์ฌ๊ธฐ์ ๋๋ 4.12 ๋ฒ์ ์ pom.xml ์ ์ถ๊ฐํด์คฌ๋ค. ๊ทผ๋ฐ ์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ pom.xml์ ์ ๋ณด๋ฉด ์ด๋ฏธ junit ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์๋ค. ์ด๊ฑธ ํ์ธ๋ ์ํ๊ณ ๊ทธ๋ฅ ์ถ๊ฐ๋ฅผ ํด์คฌ๋๋ SpringJUnit4ClassRunner requires JUnit 4.12 or higher ์ด๋ฐ ์๋ฌ๊ฐ ๋ฐ์ํด์ ํ์ฐธ ํค๋งค๋ค๊ฐ ๊ฒจ์ฐ ๋ฐ๊ฒฌํ๋ค ใ ..
2021.11.09 -
Spring DI ์ ํ๋ฆฌ์ผ์ด์ ๋ง๋ค๊ธฐ
Spring DI Application ๋ง๋ค๊ธฐ 1๏ธโฃ POJO ํด๋์ค ์์ฑํ๊ธฐ => Printer๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ ์์ฑํ๊ณ StringPrinter๊ฐ ์ด๋ฅผ ์ฐธ์กฐํด์ ์ฌ์ฉํ ์์ ์ด๋ค. ๊ทธ๋ฆฌ๊ณ Hello ์๋ฐ ํด๋์ค๋ StringPrinter๋ฅผ ์ง์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ Printer ์ธํฐํ์ด์ค๋ฅผ ํตํด์ ์ ๊ทผํ๋ค. ๊ทธ๋ฆฌ๊ณ Beans.xml์ ํ์ํ ๊ฐ์ฒด๋ค์ ์์ฑํด์ค๋ค. 2๏ธโฃ Hello.java 3๏ธโฃ Printer.java (interface) 4๏ธโฃ StringPrinter.java StringBuffer๋ฅผ ์ฌ์ฉํด์ message๋ฅผ ์ถ๊ฐํ๊ณ toString() ๋ฉ์๋๋ฅผ ํตํด String ๋ฌธ์์ด๋ก ๋ฐํํ๋ค. 5๏ธโฃ ์ค์ ๋ฉํ์ ๋ณด beans.xml 6๏ธโฃ DI ํด๋์ค ์์ฑํ๊ธฐ -> HelloBeanTest.j..
2021.11.09 -
Spring Legacy Project -> Simple Spring Maven ํ๋ก์ ํธ ์์ฑ์ MANIFEST ํ์ผ๋ง ์์ฑ๋ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ (Maven Project ์์ฑ)
Spring Legacy Project : ์ผ๋ฐ์ ์ธ Spring ํ๋ ์์ํฌ ํ๋ก์ ํธ์ด๋ค. Spring Starter Project : Spring Boot๋ฅผ ์ด์ฉํ๊ธฐ ์ํ ํ๋ก์ ํธ์ด๋ค. ์ฐ์ ์คํ๋ง์ ๊ณต๋ถํ๊ธฐ๋ก ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ Spring Legacy Project๋ก ์ ํํ๋ค. ์ฌ๊ธฐ์ Simple projects ํด๋ ์์ Simple java ์ java ๋น๋๋ฅผ ์ฌ์ฉํด ๊ฐ๋จํ Spring ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด๊ณ , Simple Spring maven ์ Spring ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํ๋ maven์ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ Spring ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ค. Simple Spring Web Maven ์ Spring web ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก maven์ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ Spring ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ค. ๋ง์ง๋ง์ผ๋ก ..
2021.11.08