๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ (125) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ Spring boot - ํ๋ฆฌ๋ง์ปค(freemaker) ์ค์ 1.build.gradle์ ์์กด์ฑ ์ถ๊ฐ 2.freemaker์์ ์ฌ์ฉํ ์ค์ ๋ด์ฉ์ application.properties์ ์ถ๊ฐ 3. index.ftl ํ์ผ ์์ฑ (์ผ๋ฐ file๋ก ์์ฑ) ์ฒ์์๋ ํ ์คํธ ํ์ผ๋ก ์ธ์๋จ jsp์ฒ๋ผ ์ฌ์ฉํ๊ธฐ ์ํด Eclipse Marketplace์์ jsp๋ก ๊ฒ์ํ Eclipse Enterprise Java and Web Developer Tools ๋ค์ด๋ก๋ sts ์ฌ์์ ํ window > Preferences > file associations ๊ฒ์ file types ์์ add > .ftl ์ถ๊ฐ associated editors ์์ add > jsp Editor > apply and close window > Preferences > content types.. Spring Boot ๊ธฐ๋ณธ ๊ตฌ์กฐ - ์ฒ์ ์คํ๋ง๋ถํธ ํ๋ก์ ํธ ์์ฑ์ ๊ตฌ์กฐ 1. src/main/java 2. src/main/resources 3. build.gradle 1. DemoApplication.java - ๊ธฐ๋ณธ main() ๋ฉ์๋ - @SpringBootApplication ์ด๋ ธํ ์ด์ ์ด ์ด๋ ธํ ์ด์ ์ ์ธ๊ฐ์ง ์ด๋ ธํ ์ด์ ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋๋ฐ @EnableAutoConfiguration : Bean์ ๋ฑ๋กํ๋ ์๋ฐ์ค์ ํ์ผ @ComponentScan : @Component์ ๊ฐ์ง Bean์ ์ค์บ, ๋ฑ๋ก @Configuration : java๊ธฐ๋ฐ์ ์ค์ ํ์ผ๋ก ์ธ์๋จ ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. 2. src/main/resources 2-1. templates : ์คํ๋ง ๋ฒ์ ์ด ์ฌ๋ผ๊ฐ๋ฉด์ jsp๋์ thymeleaf๋ก view์์ง์ด ๋ณ๊ฒฝ๋์.. ์ฌ๋ ๊ถํ ์ ๋ฆฌ https://slack.com/intl/ko-kr/help/articles/201314026-Slack%EC%9D%98-%EC%97%AD%ED%95%A0%EB%B3%84-%EA%B6%8C%ED%95%9C Slack์ ์ญํ ๋ณ ๊ถํ Slack์์๋ ๋ชจ๋ ์ฌ๋์๊ฒ ์ญํ ์ด ์์ผ๋ฉฐ, ๊ฐ์ ์์ ๋ง์ ๊ถํ๊ณผ ์ก์ธ์ค ์์ค์ ๋ณด์ ํฉ๋๋ค. ๊ฐ ์ญํ ์ ํ์ ๋ํ ๊ตฌ์ฒด์ ์ธ ๊ถํ์ ์๋์ ํ์์ ํ... slack.com 1. ์ญํ ๋ณ ๊ถํ ์ฑ๋ ๊ด๋ฆฌ ์์ ์ ๊ด๋ฆฌ์ ๋ฉค๋ฒ ์ฑ๋์์ ์ฌ์ฉ์ ์ ๊ฑฐ (๊ณต๊ฐ์ฑ๋) o o x (์์ ์๊ฐ ๊ถํ ๋ถ์ฌ ์ ๊ฐ๋ฅ) ์ฑ๋์์ ์ฌ์ฉ์ ์ ๊ฑฐ (๋น๊ณต๊ฐ์ฑ๋) o o o ๊ธฐ๋ณธ ์ฑ๋ ์ค์ o o x ์ํฌ์คํ์ด์ค ์ด๋ฆ/url๋ณ๊ฒฝ o x x ๋ชจ๋ ๋ฉค๋ฒ์ PW ์ฌ์ค์ o x x ์ฌ์ฉ์ ๊ทธ๋ฃน ์์ฑ ๋ฐ ํธ์ง o x .. SNS ์์ ๋ก๊ทธ์ธ(์นด์นด์ค๋ก๊ทธ์ธ) * SNS ์์ ๋ก๊ทธ์ธ(์นด์นด์ค๋ก๊ทธ์ธ) ์นด์นด์ค๋ก๊ทธ์ธ์ OAuth 2.0 ๊ธฐ๋ฐ์ ์์ ๋ก๊ทธ์ธ ์๋น์ค * OAuth 2.0 : ์ธ์ฆ์ ์ํ ๊ฐ๋ฐฉํ ํ์ค ํ๋กํ ์ฝ Third-Party ํ๋ก๊ทธ๋จ์๊ฒ ๋ฆฌ์์ค ์์ ์๋ฅผ ๋์ ํ์ฌ ๋ฆฌ์์ค ์๋ฒ์์ ์ ๊ณตํ๋ ์์์ ๋ํ ์ ๊ทผ ๊ถํ์ ์์ํ๋ ๋ฐฉ์์ ์ ๊ณต ๊ตฌ๊ธ, ํ์ด์ค๋ถ, ์นด์นด์ค, ๋ค์ด๋ฒ ๋ฑ์์ ์ ๊ณตํ๋ ๊ฐํธ๋ก๊ทธ์ธ๋ OAuth 2.0 ํ๋กํ ์ฝ ๊ธฐ๋ฐ์ ์ฌ์ฉ์ ์ธ์ฆ ๊ธฐ๋ฅ์ ์ ๊ณต *์นด์นด์ค ๋ก๊ทธ์ธ ์ค๋น 1. ์นด์นด์ค ๋๋ฒจ๋กํผ์ ๋ด ์ดํ๋ฆฌ์ผ์ด์ , ํ๋ซํผ ์ถ๊ฐ, RedirectURI๋ฑ๋ก ์๋น์ค์์ ID์ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ฒ์ฆํ์ง ์๊ณ ์นด์นด์ค ์ชฝ์ผ๋ก ๋๊ฒจ์ ์นด์นด์ค ๋ก๊ทธ์ธ ํ ํ ํฐ์ ์ฌ์ฉํด ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์๋น์ค ์ธก์ ์ ๋ฌ ์ ๊ณต๋ฐ์ ์ ๋ณด๋ก ์๋น์ค ํ์๊ฐ์ ์ฒ๋ฆฌ(์ ๊ท์ผ ๊ฒฝ์ฐ) ์ ๊ณต๋ฐ์ ์ ๋ณด๋ก ์๋น์ค.. ๋์งํธ์ํจ์ค ๋์งํธ์ํจ์ค : ํ๋์ ์์ด๋๋ก ๋ณธ์ธ์ด ์ ํํ ์ธ์ฆ ์๋จ์ ์ฌ์ฉํ์ฌ ์์ ํ๊ณ ํธ๋ฆฌํ๊ฒ ์ฌ๋ฌ ์ ์ ์ ๋ถ ์๋น์ค(์ ๋ถ24, ๊ณ ์ฉ๋ ธ๋๋ถ, ๊ต์ก๋ถ ๋ฑ)๋ฅผ ์ด์ฉํ ์ ์๋ ์ธ์ฆ ์๋น์ค ์ฌ์ฉ๋ฐฉ๋ฒ ๋์งํธ์ํจ์ค์ ๊ฐ์ ํ ์ ์ ์ ๋ถ ์๋น์ค์์ ๋์งํธ์ํจ์ค ์ฌ์ฉ ๊ฐ๋ฅ ๋์งํธ์ํจ์ค์ ์ฌ์ฉ์๊ฐ ์ ๊ณตํ๋ ์ ๋ณด : ์ด๋ฆ, ์ด๋ฉ์ผ, ํด๋ํฐ๋ฒํธ, ์๋ ์์ผ ์ธ์ฆ๋ฐฉ๋ฒ ๋ชจ๋ฐ์ผ ์ธ์ฆ(์ง๋ฌธ, ์๋ฉด, ํจํด, PIN, ๊ณต๋์ธ์ฆ์) ๊ณต๋์ธ์ฆ์(PC) SMS ๋ฑ ํ์ ์์ ๋ถ ๋์งํธ์ํจ์ค๋ฅผ ๊ฐ์ ํด์ผ ์ฌ์ฉ ๊ฐ๋ฅ ์ฐ๊ณ๋ฐฉ๋ฒ : https://www.onepass.go.kr/cnguide (์ ์ฒญ-์ ์ฉ-๊ฒํ ํ ์คํ) ์ฐ๊ณ์ ์ฉ ๊ฐ์ด๋ ๊ธฐ์กด ํ์๊ณผ ๋์งํธ์ํจ์ค ํ์ ๋งคํ ์ฌ์ฉ์ ์๋ณ๊ฐ์ CI๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ : User Key ์ ๋ฌด๋ฅผ ํตํด ์์ผ๋ฉด ๋ฐ๋ก ๋ก๊ทธ์ธ ์ฒ.. ์๊ฐ๋ณต์ก๋(Time Complexity) ๋ฐฑ์ค์ฌ์ดํธ์์ ์๊ฐ๋ณต์ก๋๋ฅผ ๋ง์ฃผ์ณ์ ๋ฌธ์ ํ๊ธฐ์ ์ ์ ๋ฆฌ ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ๋ฅผ ์ค๋นํ ๋ O(n) ์ด๋ O(log n), O(n2) ๋ฑ์ ๋ณด๊ธดํ๋๋ฐ ์ธ์ฐ๊ธฐ์ ๊ธ๊ธํ๊ธฐ ๋๋ฌธ์... ์๊ฐ๋ณต์ก๋๋? ์๊ณ ๋ฆฌ์ฆ์ ํ๊ฐํ ๋ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ์ฐ์ฐ ํ์์ ๋นํด ์๊ฐ์ ์ผ๋ง๋ ์๋ชจํ๋๊ฐ์ ๋ํ ํ๊ฐ๋ฅผ ๋งํจ. ์๊ฐ๋ณต์ก๋๋ฅผ ํ๊ธฐํ๋ ๋ฐฉ๋ฒ์๋ Big-O(์ํ์ ๊ธฐ์ค), Big-โฆ(ํํ์ ๊ธฐ์ค), Big-Θ(์ด ๋์ ํ๊ท ๊ธฐ์ค)์ด ์๋ค. ๋ณดํต ๋น -์ค ํ๊ธฐ๋ฒ(Big-O)์ ์ฌ์ฉํด์ ํํํ๋ค. ๋น -์ค ํ๊ธฐ๋ฒ(Big-O) ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ด ํด์๋ก(=๊ทธ๋ํ๊ฐ ์๋ก ์ฌ๋ผ๊ฐ์๋ก) ๋นํจ์จ์ ์ด๋ค. ๋น ์คํ๊ธฐ๋ฒ์ ์ํ์ ์ ๊ธฐ์ค = ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ ค = ์ด ์๊ฐ๊น์ง ๊ฑธ๋ฆด ์ ์๋ค ๋น ์ค ํ๊ธฐ๋ฒ์ ์ข ๋ฅ : ((ํจ์จ ์ข์)) O(1) > O(log n) > .. ์ถ์ํด๋์ค(Abastract) ๊ฐ๋ ๋ฐ ์์ ์ถ์์ด๋? ์ค์ฒด ๊ฐ์ ๊ณตํต๋ ํน์ฑ์ ์ถ์ถํ๋ ๊ฒ์ ๋งํ๋ค. ์ถ์ํด๋์ค๋ ํด๋์ค๋ค๊ฐ์ ๊ณตํต๋ ํน์ฑ์ ์ถ์ถํด์ ์ ์ธํ ํด๋์ค๋ฅผ ๋งํ๋ฉฐ ์ถ์ ํด๋์ค์ ์๋์ ํด๋์ค(์ค์ฒด ํด๋์ค)๋ค ๊ฐ์๋ ์์์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ถ์ํด๋์ค๊ฐ ๋ถ๋ชจ ํด๋์ค๊ฐ ๋๊ณ ์ค์ฒดํด๋์ค๋ค์ด ์์ ํด๋์ค๊ฐ ๋์ด ๋ถ๋ชจ์ ๋ชจ๋ ํน์ฑ์ ๊ฐ์ง๊ณ ์ถ๊ฐ์ ์ธ ํน์ฑ์ ๊ฐ์ง ์ ์๋ค. ์๋ฅผ ๋ค์ด iphone.class, galaxy.class, balckberry.class๊ฐ ์์ ๋ ์ด๋ค์ ๊ณตํต๋๋ ํน์ฑ์ ์ถ์ถํด phone.class ๋ผ๋ ์ถ์ํด๋์ค๋ฅผ ๋ง๋ค ์ ์๋ค. ์ด ์ถ์ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํด์ ์ฌ์ฉํ ์ ์๋ค. = new ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋ฌ๋ฉด ์ถ์ ํด๋์ค๋ฅผ ์ ์ฌ์ฉํ ๊น? 1. ์ค์ฒด ํด๋์ค๋ค์ ๊ณตํต๋ ํ๋์ ๋ฉ์๋.. ์์กด์ฑ ์ฃผ์ (DI) ์์กด์ฑ ์ฃผ์ (Dependency Injection) : ์คํ๋ง์ ํน์ง ์ค ํ๋๋ก ์ ์ด์ ์ญํ์ด ๋ฐ์ํ ๋ ์คํ๋ง ๋ด๋ถ์ ์๋ ๊ฐ์ฒด(Bean)์ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฒ * ์ ์ด์ ์ญํ : (IoC : Inversion Of Control) : ๋ฉ์๋๋ ๊ฐ์ฒด์ ํธ์ถ์ ๊ฐ๋ฐ์๊ฐ ๊ฒฐ์ ํ๋ ๊ฒ์ด ์๋๋ผ ์ธ๋ถ์์ ๊ฒฐ์ ๋๋ ๊ฒ. ์ฆ ์ ์ด๊ถ์ ๊ฐ๋ฐ์๊ฐ ์๋ ์ 3์๊ฐ ๊ฐ์ง๊ฒ ํ๋ ๊ฒ์ ๋งํ๋ค. >> ๋์จํ ๊ฒฐํฉ์ ์ ๊ณตํ๋ ๊ฒ์ด ๋ชฉ์ * ์์กด์ฑ : ํด๋์ค๋ ๊ฐ์ฒด๊ฐ ๊ด๊ณ๋ฅผ ๋งํ๋ฉฐ ์์กด์ฑ์ด ๋์ ์๋ก ๊ฐ์ฒด๊ฐ ํผ์์ ์ฒ๋ฆฌํ ์ ์๊ณ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํตํด์ ๋์์ ๋ฐ์์ผ๋ง ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค. >> ํ ํด๋์ค๊ฐ ๋ฐ๋ ๋ ๋ค๋ฅธ ํด๋์ค๊ฐ ์ํฅ์ ๋ง์ด ๋ฐ๋๋ค. => ๊ฒฐ๊ตญ DI๋ ์์กด ๊ด๊ณ์ ์๋ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ๊ณ ์ ์ดํ๋ ๊ฒ์ด ์๋๋ผ ์ ์ด์ ์ญ.. ์ด์ 1 2 3 4 5 6 ยทยทยท 16 ๋ค์