Spring(47)
-
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 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 -
Spring ์ด๊ธฐ ์ค์ ํ๊ธฐ (Spring ๋ฒ์ , java ๋ฒ์ ๋ณ๊ฒฝ)
1๏ธโฃ Spring ํ๋ก์ ํธ ์์ฑ Spring ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ ๋์ pom.xml์์ ์ด๊ธฐ ์ค์ ์ด ํ์ํ๋ค. 2๏ธโฃ Spring ๋ฒ์ ๋ณ๊ฒฝํ๊ธฐ Spring ํ๋ก์ ํธ๋ฅผ ์์ฑํ ๋ Spring Legacy Project๋ ์คํ๋ง ๋ฒ์ 3.X๊ณผ JDK1.6 ํ๊ฒฝ์์ ์ด๋ฐ์ ์ค์ ๋์ด ์๋ค. ์ฌ๊ธฐ์ ์คํ๋ง ๋ฒ์ 5.X๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ pom.xml ํ์ผ์ ์์ ํด์ผํ๋ค. -> pom.xml ์ 'maven ๋น๋ ์ค์ ํ์ผ'๋ก ํ๋ก๊ทธ๋จ ์์ฑ, ์์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ(dependency)๋ค์ด ์์ฑ๋์ด ์๋ค. 3๏ธโฃ Spring ๋ฒ์ ํ์ธํ๊ธฐ https://mvnrepository.com/artifact/org.springframework/spring-context ์คํ๋ง ํ์ฌ ๋ฒ์ ๋ค์ ํ์ธํ ์ ์๋ค. ์ด ์ค 5.2.1..
2021.11.08 -
Spring Framework ํน์ง , ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ ์ฐจ์ด, maven
1. Spring Framework ํน์ง 1๏ธโฃ ๊ฒฝ๋ ์ปจํ ์ด๋ : ์๋ฐ ๊ฐ์ฒด๋ฅผ ๋ด๊ณ ์๋ ์ปจํ ์ด๋ 2๏ธโฃ DI(Dependency Injection : ์์กด์ฃผ์ ) ์ง์ : ์ค์ ํ์ผ๋ก ๊ฐ์ฒด ์์กด ๊ด๊ณ ์ค์ ๋ฐ ์์ฑํ๋ค. 3๏ธโฃ AOP(Aspect Orientec Programming) ์ง์ : ํธ๋์ญ์ , ๋ก๊น , ๋ณด์ ๋ฑ ๊ณตํต ๊ธฐ๋ฅ์ ํต์ฌ ๊ธฐ๋ฅ์์ ๋ถ๋ฆฌํ์ฌ ์ ์ฉ๊ฐ๋ฅํ๋ค. 4๏ธโฃ IOC(Inversion of Control) ์ ์ด ๋ฐ์ ์ง์ : ๊ฐ์ฒด์ ์์ฑ, ์๋ช ์ฃผ๊ธฐ์ ๊ด๋ฆฌ๊น์ง ๋ชจ๋ ๊ฐ์ฒด์ ๋ํ ์ ์ด๊ถ์ด ๋ฐ๋์์์ ์๋ฏธํ๋ค. 5๏ธโฃ POJO(Plain Old Java Object) ์ง์ : ์ปจํ ์ด๋ ์์ ๊ฐ์ฒด๋ ํน๋ณํ ์์์ด ํ์์๋ ํ๋ฒํ ์๋ฐ ๊ฐ์ฒด์ด๋ค. 6๏ธโฃ ํธ๋์ญ์ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ผ๊ด๋ ๋ฐฉ๋ฒ ์ง์ (์..
2021.11.08 -
STS ๋ค์ด๋ก๋, ์ค์นํ๊ธฐ
STS(Spring Tool Suite) https://spring.io/tools Spring Tools 4 is the next generation of Spring tooling Largely rebuilt from scratch, Spring Tools 4 provides world-class support for developing Spring-based enterprise applications, whether you prefer Eclipse, Visual Studio Code, or Theia IDE. spring.io ๋ฐ์ 4.12.1 Windows ๋ฒ์ ์ผ๋ก ๋ค์ด ๋ฐ๋๋ค. jar ์ด์ง๋ง ํด๋ฆญํด์ ์์ถ?์ ํ๋ฉด ์ด๋ฐ ํด๋๊ฐ ์๊ธด๋ค. ๊ฑฐ๊ธฐ์ ํด๋ฆญํด์ ์คํํ๋ฉด ๋๋ค.
2021.11.08