Servlet์์ ์คํ๋ง ApplicationContext ์ฌ์ฉํ๊ธฐ Servlet์์ ์คํ๋ง ApplicationContext ์ฌ์ฉํ๊ธฐ pom.xml org.springframework spring-webmvc 5.1.3.RELEASE ์คํ๋ง ApplicationContext, ์ฆ ์คํ๋ง IoC๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๊ด๋ จ ์์กด์ฑ์ ์ถ๊ฐํด์ผ ํ๋ค. spring-context ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋๋ก ์์กด์ฑ์ ์ถ๊ฐํ๋ค. ์ ์์ ์์๋ spring-webmvc๋ฅผ ๊ฐ์ ธ์ค๋๋ก ํ์ง๋ง spring-context๋ง ๊ฐ์ ธ์๋ ๋๋ค. web.xml org.springframework.web.context.ContextLoaderListener contextClass org.springframework.web.context.support.AnnotationConfigWebApplication.. 2020. 3. 11. ์คํ๋ง ๋ถํธ์ ์์กด์ฑ ๊ด๋ฆฌ(Dependency Management) ์คํ๋ง ๋ถํธ์ ์์กด์ฑ ๊ด๋ฆฌ(Dependency Management) ๊ธฐ๋ณธ์ ์ธ ์คํ๋ง ๋ถํธ ํ๋ก์ ํธ์ pom.xml ํ์ผ์ ๋ณด๋ฉด ์์กด์ฑ ์ค์ ์ด spring-boot-starter-web๊ณผ spring-boot-starter-test ๋ ๊ฐ ๋ฟ์ด๊ณ ๋ฒ์ ๋ํ ๋ช ์ํ์ง ์๊ณ ์์ง๋ง ์ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์์์ ๊ฐ์ ธ์จ๋ค. org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine ์ด๊ฒ์ด ๊ฐ๋ฅํ ์ด์ ๋ ์คํ๋ง ๋ถํธ๊ฐ ์ ๊ณตํ๋ ์์กด์ฑ ๊ด๋ฆฌ ๊ธฐ๋ฅ ๋๋ฌธ์ด๋ค. ๊ธฐ๋ณธ ์คํ๋ง ๋ถํธ ํ๋ก์ ํธ๋ spring-boot-starter-.. 2020. 3. 11. ์คํ๋ง ๋ถํธ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ - Spring Initializr ์น ๋๊ตฌ ์ฌ์ฉ ์คํ๋ง ๋ถํธ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ - Spring Initializr ์น ๋๊ตฌ ์ฌ์ฉ ์คํ๋ง ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ ์ค์๋ Spring์์ ์ ๊ณตํ๋ Spring Initializr ์น ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฐํธํ ๋ฐฉ๋ฒ์ด ์๋ค. https://start.spring.io/ ์ ์ ์ํ์. ์ ์ฃผ์๋ก ๋ค์ด๊ฐ๋ฉด ์ด๋ฐ ํ๋ฉด์ด ๋ณด์ผ๊ฒ์ด๋ค. ์๊ฐ์ด ํ๋ฆ์ ๋ฐ๋ผ UI๋ ๋ฐ๋ ์ ์๋ค. ์ ํํด์ผํ๋ ์ต์ ์ ์ฐจ๋ก๋ก, Project: ์ฌ์ฉํ ๋น๋ ํด ์ ํ (Maven/Gradle) Maven, Gradle์ ํ๋ก์ ํธ์ ํ์ํ ์์กด์ฑ์ ๊ด๋ฆฌํ๊ณ ๋น๋ ๋ผ์ดํ์ฌ์ดํด์ ๊ด๋ฆฌํด์ฃผ๋ ํด์ด๋ค. ๊ณผ๊ฑฐ์๋ Maven์, ์ต๊ทผ์๋ Gradle์ ์ฌ์ฉํ๋ ์ถ์ธ์ด๋ค. ์คํ๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌ ์์ฒด๋ ์ต๊ทผ์๋ Gradle๋ก ํ๊ณ ์๋ค. Language: ์ธ์ด .. 2020. 3. 11. IntelliJ ํ๋ก์ ํธ ์์ค ๋๋ ํ ๋ฆฌ(src) ์ค์ ๋ฐฉ๋ฒ IntelliJ ํ๋ก์ ํธ ์์ค ๋๋ ํ ๋ฆฌ(src) ์ค์ ๋ฐฉ๋ฒ ์ ํ๋ก์ ํธ์ java ๋๋ ํ ๋ฆฌ๋ ํ์ฌ ์ผ๋ฐ ๋๋ ํ ๋ฆฌ์ด๋ค. ์ผ๋ฐ ๋๋ ํ ๋ฆฌ์ธ๊ฒ์ ํ์ ์์ด์ฝ์ผ๋ก ํ์๋๋ ๊ฒ์ ๋ณด๊ณ ์ ์ ์๋ค. ์ฆ ์์ค ๋๋ ํ ๋ฆฌ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ ํด๋์ค๋ฅผ ๋ง๋ค์ด๋ ์ปดํ์ผ ๋์์ ํฌํจ๋์ง ์๋๋ค. ๋๋ ํ ๋ฆฌ๋ฅผ ์์ค ๋๋ ํ ๋ฆฌ๋ก ์ค์ ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ๋ฉด ๋๋ค. Project Structure ์ฐฝ์ ์ด๊ณ Modules - ํด๋น ๋ชจ๋ ์ ํ - ๋๋ ํ ๋ฆฌ ์ ํ ํ Mark as: ์ฐ์ธก์ Sources๋ฅผ ํด๋ฆญํ๋ค. ๊ทธ๋ฌ๋ฉด ์ฐ์ธก์ Source Folders๊ฐ ์๋ก ์๊ธฐ๊ณ ์ ํํ java ํด๋๊ฐ ์ถ๊ฐ๋๋ค. ์ ์ฉํ๋ฉด ์๊น์ ๋ฌ๋ฆฌ java ํด๋์ ์์ด์ฝ์ด ํ๋์์ผ๋ก ๋ฐ๋๋ค. (์์ด์ฝ์ ํ ๋ง์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์) 2020. 3. 11. IntelliJ๋ก Archetype์ ์ฌ์ฉํด์ Maven ํ๋ก์ ํธ ์ฝ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ IntelliJ๋ก Archetype์ ์ฌ์ฉํด์ Maven ํ๋ก์ ํธ ์ฝ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ IntelliJ๋ก ์ ํ๋ก์ ํธ/๋ชจ๋์ ์์ฑํ ๋ Maven์ ์ ํํ๋ฉด 'Create from archetype'์ด๋ผ๋ ์ต์ ์ด ์๋ค. Archetype์ maven์์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋์ ํ๋ก์ ํธ ํธ๋ฆฌ(๊ตฌ์กฐ)์ด๋ค. ์ ๊ทธ๋ฆผ ๋ชฉ๋ก์์ ๋ณด์ฌ์ง๋๊ฒ์ฒ๋ผ ์ฌ๋ฌ๊ฐ์ง ๊ตฌ์กฐ๊ฐ ์ค๋น๋์ด ์๋ค. ์ฌ์ฉํ archetype์ ์ ํํ๊ณ Next๋ฅผ ํด๋ฆญํด์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ฉด ๋๋ค. Archetype์ ์ ํํ๋ฉด ํ๋จ์ ํด๋น archetype์ ๋ํ ๊ฐ๋จํ ์ค๋ช ์ด ๋ณด์ฌ์ง๋ค. ์ ๊ทธ๋ฆผ์ maven-archetype-webapp์ ์ ํํด์ 'A simple Java web application'์ด๋ผ๊ณ ๋ณด์ฌ์ง๋ ๋ชจ์ต์ด๋ค. ๋ค์ ํ๋ฉด์์๋ maven ํ ๋๋ ํ ๋ฆฌ.. 2020. 3. 11. try-with-resource ๋ฌธ๋ฒ์ ์ฌ์ฉํ JDBC ํ๋ก๊ทธ๋๋ฐ ์์ ์ฝ๋ try-with-resource ๋ฌธ๋ฒ์ ์ฌ์ฉํ JDBC ํ๋ก๊ทธ๋๋ฐ ์์ ์ฝ๋ try-with-resource๋ java 7 ์ด์๋ถํฐ ์ง์๋๋ฉฐ try ๋ธ๋ญ ์คํ์ด ์๋ฃ๋๋ฉด ()์์ ๋ฆฌ์์ค์ ์์์ ํด์ ํ๋ ๋ฉ์๋๋ฅผ ์๋์ผ๋ก ํธ์ถํด์ค๋ค. String url = "jdbc:mysql://localhost:3306/myschema"; // ์์น ์ ๋ณด String username = "user"; // ์ธ์ฆ ์ ๋ณด String password = "1234"; // ์ธ์ฆ ์ ๋ณด // try-with-resource try(Connection conn = DriverManager.getConnection(url, username, password)) { String sql = "SELECT id, username, p.. 2020. 3. 11. [์๊ณ ๋ฆฌ์ฆ] ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณ์ ๋ถ์ - ์๊ฐ ๋ณต์ก๋์ ์ ๊ทผ์ฑ๋ฅ [์๊ณ ๋ฆฌ์ฆ] ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณ์ ๋ถ์ - ์๊ฐ ๋ณต์ก๋์ ์ ๊ทผ์ฑ๋ฅ 1. ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ๊ธฐ๋ฒ ์ฃผ์ด์ง ๋ฌธ์ , ์์ฑ, ์กฐ๊ฑด ๋ฑ์ ๋ฐ๋ผ ๋งค์ฐ ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ์ด ์กด์ฌํ ์ ์๋ค. ๋ฐ๋ผ์ ์ผ๋ฐ์ ์ด๊ณ ๋ฒ์ฉ์ ์ธ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ๊ธฐ๋ฒ์ ์กด์ฌํ์ง ์์ง๋ง ๊ทธ ์ค ๋ํ์ ์ธ ์ค๊ณ ๊ธฐ๋ฒ ์ธ ๊ฐ์ง๋ฅผ ๊ผฝ์ผ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. ๋ถํ ์ ๋ณต ๋ฐฉ๋ฒ(Divide-and-Conquer) ๋์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ(Dynamic Programming) ์์ฌ์์ด ๋ฐฉ๋ฒ(Greedy) ๋ฐ๋ผ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๋ถํ๋ฉฐ ์ ์ธ ๊ฐ์ง ์ค๊ณ ๊ธฐ๋ฒ์ ๊ผญ ์์๋ฌ์ผ ํ ๊ฒ์ด๋ค. 2. ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ ๋ถ์ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ ๋ถ์์ ์๊ณ ๋ฆฌ์ฆ ์ํ์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ ์๊ณผ ์ํ ์๊ฐ์ ๊ณ์ฐํ๋ ๊ฒ์ด๋ค. ๋ฉ๋ชจ๋ฆฌ ์ → ๊ณต๊ฐ ๋ณต์ก๋(Space Complexity) = ์ ์ ๊ณต๊ฐ + ๋์ ๊ณต๊ฐ .. 2020. 3. 11. [์๊ณ ๋ฆฌ์ฆ] ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ ๊ณผ ๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ [์๊ณ ๋ฆฌ์ฆ] ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ ๊ณผ ๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ 1. ์๊ณ ๋ฆฌ์ฆ์ ์ ์์ ์กฐ๊ฑด 1) ์๊ณ ๋ฆฌ์ฆ์ ์ ์ ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํ ๋ช ๋ น์ด๋ค์ ๋จ๊ณ์ ๋์ด 2) ์๊ณ ๋ฆฌ์ฆ์ ์กฐ๊ฑด ์ ๋ ฅ : 0๊ฐ ์ด์์ ์ธ๋ถ ์ ๋ ฅ ์ถ๋ ฅ : 1๊ฐ ์ด์์ ์ถ๋ ฅ ๋ช ํ์ฑ : ๊ฐ ๋ช ๋ น์ ๋ชจํธํ์ง ์๊ณ ๋ช ํํด์ผ ํจ ์ ํ์ฑ : ํ์ ๋ ์์ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ๋ฐ๋์ ์ข ๋ฃ๋จ ์ ํจ์ฑ : ๋ชจ๋ ๋ช ๋ น์ ์ปดํจํฐ์์ ์ํ ๊ฐ๋ฅํด์ผ ํจ ์๊ณ ๋ฆฌ์ฆ์ ์กฐ๊ฑด์ ํฉ์ณ์ ์ ์ํ์๋ฉด ์๊ณ ๋ฆฌ์ฆ์ด๋ ์ฃผ์ด์ง ๋ฌธ์ ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๊ธฐ ์ํด ๋ชจํธํ์ง ์๊ณ ์ปดํจํฐ๊ฐ ์ํ ๊ฐ๋ฅํ ์ผ๋ จ์ ์ ํ๊ฐ์ ๋ช ๋ น๋ค์ ์์์ ์ผ๋ก ๊ตฌ์ฑํ ๊ฒ์ด๋ค. 2. ์๊ณ ๋ฆฌ์ฆ ์์ฑ ๋จ๊ณ 3. ์๊ณ ๋ฆฌ์ฆ์ ํํ/๊ธฐ์ ๋ฐฉ๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ํฌ๊ฒ ์ผ์ ์ธ์ด, ์์ฌ ์ฝ๋(Pseudo code), ์์๋์ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ํํํ ์ ์.. 2020. 3. 10. [JAVA ๋์์ธ ํจํด] static class์ Builder Pattern(๋น๋ ํจํด) [JAVA ๋์์ธ ํจํด] static class์ Builder Pattern(๋น๋ ํจํด) 1. static class๋? Static class๋ inner class(๋ด๋ถ ํด๋์ค)์ ํ ์ข ๋ฅ์ด๋ค. inner class ์ค์์ outer class(์ธ๋ถ ํด๋์ค)์ ๋ฉค๋ฒ๋ณ์ ์ ์ธ ์์น์ static ํค์๋๋ฅผ ๋ถ์ฌ ์ ์ธํ ํด๋์ค์ด๋ค. ์ฃผ๋ก outer class์ static ๋ฉ์๋์์ ์ฌ์ฉ๋๋ค. 2. static class์ ์ ์ธ ๋ฐฉ๋ฒ // Outer class public class Outer { // Static inner class public static class Inner { } } 3. static class์ ๋ฉค๋ฒ์ ์ ๊ทผ // Outer class public class Outer { // .. 2020. 3. 9. IntelliJ์์ Lombok ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ธํ ๋ฐฉ๋ฒ IntelliJ์์ Lombok ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ธํ ๋ฐฉ๋ฒ Lombok ๋ผ์ด๋ธ๋ฌ๋ฆฌ Lombok์ Annotation์ ์ด์ฉํด ์ปดํ์ผ ์์ ์ Getter, Setter, ์์ฑ์, toString, Builder ๋ฑ์ ์๋์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ์๋ฐ ๊ฐ๋ฐ์๋ค์ ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋์ด๋ค. 1. Lombok ์์กด์ฑ ์ถ๊ฐ 1) Spring Initializr ์ฌ์ฉ 2) Gradle ์ฌ์ฉ dependencies { compileOnly 'org.projectlombok:lombok:1.18.12' annotationProcessor 'org.projectlombok:lombok:1.18.12' } 3) Maven ์ฌ์ฉ org.projectlombok lombok 1.18.12 compile ์์กด์ฑ์ ์ถ๊ฐํ๋.. 2020. 3. 9. [IntelliJ] Gradle ํ๋ก์ ํธ resources ๋๋ ํ ๋ฆฌ ๋ง๋ค๊ธฐ [IntelliJ] Gradle ํ๋ก์ ํธ resources ๋๋ ํ ๋ฆฌ ๋ง๋ค๊ธฐ ๋ค์์ ์ผ๋ฐ์ ์ธ gradle ํ๋ก์ ํธ์ ๊ตฌ์กฐ์ด๋ค. resources ๋๋ ํ ๋ฆฌ๋ main, test ํ์์ ์์นํ๋๋ฐ intelliJ ๋ฒ์ ์ ๋ฐ๋ผ resources ๋๋ ํ ๋ฆฌ๊ฐ ์์ฑ๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด ๋๋ ํ ๋ฆฌ๋ฅผ ์ง์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์์๋ณด์. main์์ resources ์ด๋ฆ์ ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ ๋ค. resources ๋๋ ํ ๋ฆฌ๊ฐ ๋ง๋ค์ด์ก๋ค. ๋ ๊ฐ์ ๊ฒฝ์ฐ์ ์๋์ผ๋ก resources ๋๋ ํ ๋ฆฌ๋ก ์ธ์๋ผ์ ์์ด์ฝ์ด ์ ์ฉ๋์ผ๋ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ, ์์ฑํ resources ๋๋ ํ ๋ฆฌ์ ๋ง์ฐ์ค ์ฐ์ธก ๋ฒํผ์ ํด๋ฆญํด์ ์ปจํ ์คํธ ๋ฉ๋ด๋ฅผ ๋์ฐ๊ณ Mark Directory as - Resoures Root๋ฅผ ํด๋ฆญํ๋ค. 2020. 3. 9. IntelliJ๋ก Gradle ํ๋ก์ ํธ ์์ฑํ๊ณ DB ์ฐ๋ํ๊ธฐ IntelliJ๋ก Gradle ํ๋ก์ ํธ ์์ฑํ๊ณ DB ์ฐ๋ํ๊ธฐ 1. Gradle ํ๋ก์ ํธ ๋ง๋ค๊ธฐ ๊ฐ์ฅ ๋จผ์ ์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ค. ์ข์ธก์์ Gradle์ ์ ํํ๊ณ Project SDK์์ ์ฌ์ฉํ JDK ๋ฒ์ ์ ์ ํ, ์ค์ Additional Libraries and Frameworks์์๋ Java๋ง ์ ํํ๊ณ Next๋ฅผ ํด๋ฆญํ๋ค. ํ๋ก์ ํธ ์ด๋ฆ, ์์น, Group Id, Artifact Id๋ฅผ ์ ๋ ฅํ๊ณ Finish๋ฅผ ํด๋ฆญํ๋ค. 2. JDBC Driver ์์กด์ฑ ์ถ๊ฐ Maven ์ ์ฅ์(https://mvnrepository.com)์์ ์์ ์ด ์ฌ์ฉํ๋ DBMS์ JDBC ๋๋ผ์ด๋ฒ ์์กด์ฑ ๊ตฌ๋ฌธ์ ๋ณต์ฌํ๋ค. Gradle ํญ์ ๋ด์ฉ์ ๋ณต์ฌํ๋ฉด ๋๋ค. ๋๋ MySQL 8์ ๋๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ณต.. 2020. 3. 8. ์ด์ 1 ยทยทยท 4 5 6 7 8 9 10 ยทยทยท 17 ๋ค์