๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

STUDY/SPRING

(29)
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์—”์ง„์ด ๋ณ€๊ฒฝ๋˜์—ˆ..
์˜์กด์„ฑ ์ฃผ์ž…(DI) ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection) : ์Šคํ”„๋ง์˜ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋กœ ์ œ์–ด์˜ ์—ญํ–‰์ด ๋ฐœ์ƒํ•  ๋•Œ ์Šคํ”„๋ง ๋‚ด๋ถ€์— ์žˆ๋Š” ๊ฐ์ฒด(Bean)์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋ฒ• * ์ œ์–ด์˜ ์—ญํ–‰ : (IoC : Inversion Of Control) : ๋ฉ”์„œ๋“œ๋‚˜ ๊ฐ์ฒด์˜ ํ˜ธ์ถœ์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์™ธ๋ถ€์—์„œ ๊ฒฐ์ •๋˜๋Š” ๊ฒƒ. ์ฆ‰ ์ œ์–ด๊ถŒ์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ์ œ 3์ž๊ฐ€ ๊ฐ€์ง€๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. >> ๋Š์Šจํ•œ ๊ฒฐํ•ฉ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์  * ์˜์กด์„ฑ : ํด๋ž˜์Šค๋‚˜ ๊ฐœ์ฒด๊ฐ„ ๊ด€๊ณ„๋ฅผ ๋งํ•˜๋ฉฐ ์˜์กด์„ฑ์ด ๋†’์„ ์ˆ˜๋ก ๊ฐ์ฒด๊ฐ€ ํ˜ผ์ž์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๊ณ  ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด์„œ ๋„์›€์„ ๋ฐ›์•„์•ผ๋งŒ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. >> ํ•œ ํด๋ž˜์Šค๊ฐ€ ๋ฐ”๋€” ๋•Œ ๋‹ค๋ฅธ ํด๋ž˜์Šค๊ฐ€ ์˜ํ–ฅ์„ ๋งŽ์ด ๋ฐ›๋Š”๋‹ค. => ๊ฒฐ๊ตญ DI๋Š” ์˜์กด ๊ด€๊ณ„์— ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜๊ณ  ์ œ์–ดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ œ์–ด์˜ ์—ญ..
์นด์นด์˜ค ๋กœ๊ทธ์ธ API ์‚ฌ์šฉํ•˜๊ธฐ - 4(๋กœ๊ทธ์ธ ์™„๋ฃŒ) ์ด์ „ ํฌ์ŠคํŒ… : https://3unbbb.tistory.com/106 ์นด์นด์˜ค ๋กœ๊ทธ์ธ API ์‚ฌ์šฉํ•˜๊ธฐ 3 ์ด์ „ ํฌ์ŠคํŒ… : ์นด์นด์˜ค๋ž‘ ์—ฐ๊ฒฐ https://3unbbb.tistory.com/105 ์นด์นด์˜ค ๋กœ๊ทธ์ธ API ์‚ฌ์šฉํ•˜๊ธฐ -2 ์ด์ „ ํฌ์ŠคํŠธ์—์„œ ์นด์นด์˜ค ๋กœ๊ทธ์ธ API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ์„ค์ • & ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ๋ดค๋‹ค. https://3unbbb.tistory.co.. 3unbbb.tistory.com ์ด์ œ ๊ฐ€์ ธ์˜จ ํ† ํฐ์œผ๋กœ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•จ ์ „์ฒด์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ๊ฑฐ๋‹ˆ๊นŒ GET๋ฐฉ์‹์œผ๋กœ ๋ถ€๋ฅด๊ธฐ & ์š”์ฒญ ํ—ค๋” ํ™•์ธํ•˜๊ธฐ(access_token) ์•ž์— access_token์€ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉํ–ˆ๋˜ ๋ฐฉ๋ฒ•์ด๋ž‘ ๋น„์Šท (outputStream์ด์•„๋‹Œ inputStream ์‚ฌ์šฉ) public void getUserInfo(S..
์นด์นด์˜ค ๋กœ๊ทธ์ธ API ์‚ฌ์šฉํ•˜๊ธฐ - 3 ์ด์ „ ํฌ์ŠคํŒ… : ์นด์นด์˜ค๋ž‘ ์—ฐ๊ฒฐ https://3unbbb.tistory.com/105 ์นด์นด์˜ค ๋กœ๊ทธ์ธ API ์‚ฌ์šฉํ•˜๊ธฐ -2 ์ด์ „ ํฌ์ŠคํŠธ์—์„œ ์นด์นด์˜ค ๋กœ๊ทธ์ธ API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ์„ค์ • & ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ๋ดค๋‹ค. https://3unbbb.tistory.com/104 ์นด์นด์˜ค ๋กœ๊ทธ์ธ api ์‚ฌ์šฉํ•˜๊ธฐ -1 ํŒ€ํ”„๋กœ์ ํŠธ์—์„œ ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋˜ sns ๋กœ๊ทธ์ธ api ํฌํŠธ 3unbbb.tistory.com ๋ฐœ๊ธ‰๋ฐ›์€ ์ฝ”๋“œ๋กœ ํ† ํฐ์„ ๋ฐ›์•„์•ผ ํ•˜๋Š”๋ฐ ์œ„ ํ˜•์‹์— ๋งž๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ๋ฉด ๋จ(required ํ•„์ˆ˜) ์š”์ฒญ์€ service์—์„œ httpURLConnection์œผ๋กœ ์ฒ˜๋ฆฌ OauthService.java public String getAccessToken(String code) throws IOException { Syste..
์นด์นด์˜ค ๋กœ๊ทธ์ธ API ์‚ฌ์šฉํ•˜๊ธฐ -2 ์ด์ „ ํฌ์ŠคํŠธ์—์„œ ์นด์นด์˜ค ๋กœ๊ทธ์ธ API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ์„ค์ • & ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ๋ดค๋‹ค. https://3unbbb.tistory.com/104 ์นด์นด์˜ค ๋กœ๊ทธ์ธ api ์‚ฌ์šฉํ•˜๊ธฐ -1 ํŒ€ํ”„๋กœ์ ํŠธ์—์„œ ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋˜ sns ๋กœ๊ทธ์ธ api ํฌํŠธํด๋ฆฌ์˜ค๋ž‘ ์ž์†Œ์„œ๊ฐ€ ๋Œ€๊ฐ• ํ‹€์ด ์žกํ˜€๊ฐ€๋‹ˆ๊นŒ ๋ฏธ๋ค„๋’€๋˜ ์†Œ์…œ๋กœ๊ทธ์ธ ๊ณต๋ถ€ํ•˜๊ธฐ! 1. ์šฐ์„  ์นด์นด์˜ค ๋””๋ฒจ๋กœํผ์—์„œ ๋‚ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ถ”๊ฐ€, ํ”Œ๋žซํผ์— ๋„ 3unbbb.tistory.com ์ด์ œ ์นด์นด์˜ค์—์„œ ์•Œ๋ ค์ค€๋Œ€๋กœ ํ•˜๋‚˜ํ•˜๋‚˜ ๋”ฐ๋ผ๊ฐ€๋ฉด ๋œ๋‹ค. Step1 ์นด์นด์˜ค ๋กœ๊ทธ์ธ 1. ์นด์นด์˜ค ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ์ƒ์„ฑ ํ‰์†Œ์— ์ž์ฃผ๋ณด๋˜ ์นด์นด์˜ค ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์€ ์•„๋ž˜๋กœ ๊ฐ€๋ฉด ๋””์ž์ธ์†Œ์Šค๋ฅผ ๋‹ค์šด๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. https://developers.kakao.com/docs/latest/ko/kakaologin/js Kakao ..
์นด์นด์˜ค ๋กœ๊ทธ์ธ api ์‚ฌ์šฉํ•˜๊ธฐ -1 ํŒ€ํ”„๋กœ์ ํŠธ์—์„œ ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋˜ sns ๋กœ๊ทธ์ธ api ํฌํŠธํด๋ฆฌ์˜ค๋ž‘ ์ž์†Œ์„œ๊ฐ€ ๋Œ€๊ฐ• ํ‹€์ด ์žกํ˜€๊ฐ€๋‹ˆ๊นŒ ๋ฏธ๋ค„๋’€๋˜ ์†Œ์…œ๋กœ๊ทธ์ธ ๊ณต๋ถ€ํ•˜๊ธฐ! 1. ์šฐ์„  ์นด์นด์˜ค ๋””๋ฒจ๋กœํผ์—์„œ ๋‚ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ถ”๊ฐ€, ํ”Œ๋žซํผ์— ๋„๋ฉ”์ธ ์ถ”๊ฐ€ ์นด์นด์˜ค ๋กœ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด redirectURI๋ฅผ ๋“ฑ๋กํ•ด์•ผ ํ•œ๋‹ค. 2. RedirectURI๋“ฑ๋ก ํ›„ ์œ„์ชฝ์˜ ํ™œ์„ฑํ™” ์„ค์ •์„ ON์œผ๋กœ ๋ณ€๊ฒฝ (์นด์นด์˜ค ๋กœ๊ทธ์ธ API๋ฅผ ํ†ตํ•ด ๊ฐ„ํŽธ ํšŒ์›๊ฐ€์ž…๊นŒ์ง€ ๊ฐ€๋Šฅ) 3. ์™ผ์ชฝ ๋ฉ”๋‰ด์˜ ๋™์˜ํ•ญ๋ชฉ > ๊ฐ„ํŽธ ํšŒ์›๊ฐ€์ž…์„ ํ•  ๋•Œ ์นด์นด์˜ค์ชฝ์—์„œ ๊ฐ€์ ธ์˜ฌ ์ •๋ณด๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Œ ํ•ญ๋ชฉ๋ณ„๋กœ ์ขŒ์ธก์˜ ์„ค์ •์„ ๋ˆ„๋ฅด๋ฉด ์„ค์ • ๊ฐ€๋Šฅ(์ด์šฉ๋ชฉ์ ์€ ๊ทธ๋ƒฅ ์„œ๋น„์Šค ์ด์šฉ์ด๋ผ๊ณ  ์ž‘์„ฑํ•จ) 4. ๊ธฐ๋ณธ ์„ค์ •์€ ๋๋‚ฌ์œผ๋‹ˆ ์ด์ œ Docs ๋ณด๊ธฐ https://developers.kakao.com/docs/latest/ko/kakaolog..
ERROR: org.springframework.web.context.ContextLoader - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in ServletContext resource [/WEB-INF/spring/root-context.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [C:\Users\Eunb\TeamProject\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtp..

๋ฐ˜์‘ํ˜•