๋ฐฑ์๋ ๊ฐ๋ฐ
69
SpringBoot WebSocket Chatting Server๋ง๋ค๊ธฐ 4๋จ๊ณ - SpringBoot Security ์ฅ์ฐฉ
0.๋ชฉ์ฐจ ๊ณต๋ถํ ๋ด์ฉ๋ค์ ์ถ์ฒ: ddadyProgrammer๋์ ๋ธ๋ก๊ทธ Spring websocket chatting server(4) - SpringSecurity + Jwt๋ฅผ ์ ์ฉํ์ฌ ๋ณด์๊ฐํํ๊ธฐ ์ด๋ฒ ์ฅ์์๋ SpringSecurity์ Jwt๋ฅผ ์ด์ฉํ์ฌ Web ๋ฐ Websocket์ ๋ณด์์ ์ข ๋ ๊ฐํํ๊ณ . ๊ธฐ์กด์ ๋ณต์กํ ๋ก์ง์ ๊ฐ์ํํ๋ ์์
์ ์งํํด ๋ณด๊ฒ ์ต๋๋ค. ํฌ๊ฒ ์๋์ 3๊ฐ์ง ์์
์ ์งํํ๊ฒ ์ต๋๋ค. Spri www.daddyprogrammer.org 1. ๊ฐ์ (์๋กญ๊ฒ ์ถ๊ฐํ ๊ฒ๋ค) 2. ์ ๊ฐ๋ 3. ์ฝ๋ ๋ถ์ 4. ํ๋ก์ ํธ ์งํํ๋ฉฐ ๋ง๋ฌ๋ ์ค๋ฅ ๋ชจ์ 1. ๊ฐ์ ์ด๋ฒ ์ฅ์์๋ ์๋กญ๊ฒ Spring Security๋ฅผ ์ ์ฉํ๋ค. ์๋ ํ๋ก์ ํธ๋ ์ ๊ทผํ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ๋ํ๋ช
๋ง ์
๋ ฅํ๋ฉด ๋ชจ๋ ์ฌ์ฉ..
2024.01.22
๋ฐฑ์๋ ๊ฐ๋ฐ/WebSocket
@Configuration์ ๋ํ์ฌ
@Configuration์ ํด๋น ํด๋์ค๊ฐ ์ค์ ์ ๊ดํ ํด๋์ค์์ Spring Container์๊ฒ ์๋ฆฌ๊ณ , ๊ทธ๊ฒ์ Bean์ผ๋ก ๋ฑ๋กํ๋๋ก ํ๋ ์ด๋
ธํ
์ด์
์ด๋ค. ์ด? ๊ทธ๋ฌ๋ฉด ํด๋น ํด๋์ค๊ฐ ์ค์ ํ์ผ์์ ๊ฐ์์ ์ผ๋ก ์๋ฆฌ๋ ์ผ ์ธ์๋ @Bean๊ณผ ๋๊ฐ์ ๊ฒ์ธ๊ฐ? ๋ฌผ๋ก ์๋๋ค. ์ค์ ํ์ผ์ ๊ฒฝ์ฐ, ํด๋น ์ค์ ์ ํต์ผ์ฑ์ ์ํด์ ํ๋๋ง ์์ฑํ๊ณ , ํ๋ก์ ํธ ๋ด์์ ๊ณ์ ๊ทธ ๋ด์ฉ์ ์ฌํ์ฉํ๋ฉฐ ์จ์ผํ๋ค. ์ด์ ์์ํ์ฌ @Configuration์ด๋ ์ด๋
ธํ
์ด์
์ ํด๋์ค๋ฅผ Bean์ผ๋ก ๋ฑ๋กํ๊ณ ํด๋น Bean ๊ฐ์ฒด๋ฅผ ์ฑ๊ธํค์ด ๋๋๋ก ์ค์ ํด์ค๋ค.
2024.01.20
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
SpringBoot WebSocket Chatting Server ๋ง๋ค๊ธฐ 3๋จ๊ณ - ์ฌ๋ฌ ์ฑํ
์๋ฒ ๊ฐ์ ๋ฉ์ธ์ง ๊ณต์ (by Redis Pub/sub)
2
https://www.daddyprogrammer.org/post/4731/spring-websocket-chatting-server-redis-pub-sub/ 0.๋ชฉ์ฐจ 1. ๊ฐ์ 2. ์ ๊ฐ๋, ์ ์ฒด์ ์ธ ํ๋ฆ ํ์
3. ์ฝ๋ ๋ถ์ 4. ํ๋ก์ ํธ ์งํํ๋ฉด์ ์์๋ ์๋ฌ ํด๊ฒฐ 1. ๊ฐ์ ์ด๋ฒ ํ๋ก์ ํธ์์๋ Redis๋ผ๋ ์ธ๋ฉ๋ชจ๋ฆฌํ DB๋ฅผ ํ์ฉํ์ฌ 2๋ฒ๊น์ง ์งํํ๋ STOMP์ WebSocket๋ง์ผ๋ก ๊ตฌํํ Chatting Server ํ๋ก์ ํธ๋ฅผ ๋ ๊ณ ๋ํ ํ๋ ค๊ณ ํ๋ค. ์ด? ์ด๋ฏธ ํ๋์ ์๋ฒ์์ ์๋ก ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ ์ถฉ๋ถํ ๋๋๋ฐ ์ Redis๋ฅผ ์ฅ์ฐฉํด์ผ ํ ๊น์? ๊ทธ๋ ๋ค๋ฉด, ๋จผ์ Redis๋ฅผ ์ ์ฅ์ฐฉํด์ผ ํ๋์ง์ ๋ํด์ ์ค๋ช
ํ๊ฒ ๋ค. โ STOMP์ WebSocket๋ง์ ์ฐ๋ Chatting Serv..
2024.01.20
๋ฐฑ์๋ ๊ฐ๋ฐ/WebSocket
Rest-Template๋ ๋ฌด์์ธ๊ฐ
์คํ๋ง์์ ์ ๊ณตํ๋ HTTP Client REST API ํธ์ถ์ ํ์ํ ํจ์๋ฅผ ์ ๊ณตํ๋ ํด๋์ค์ด๋ค. HTTP Client Rest API๋? ๋จผ์ ์น์ด ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ์ดํด๋ด์ผํ๋ค. ์น์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ก ๋๋๋ค. ํด๋ผ์ด์ธํธ ๋ถ๋ถ์ ์ฌ์ฉ์์๊ฒ ํ์ํ ์ ๋ณด๋ฅผ ์๋ฒ์๊ฒ ์์ฒญํ๊ณ , ์๋ฒ๋ ๊ทธ์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๊ณตํ๋ค. ํด๋น ๊ณผ์ ์์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์ํ๋ ์ ๋ณด๋ฅผ ์์ฒญํ๋ ๋ถ๋ถ์ HTTP Client REST API๋ผ๊ณ ํ๋ค. ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ค๋ SPRING์ ๋ฐฑ์๋ ํ๋ ์์ํฌ๋ก ์๋ฒ์ ์ญํ ์ ๋ด๋นํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ง๋ง, ๋์ ๋ฐ๋ผ์ ์ธ๋ถ API์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํด์ผํ๋ ํด๋ผ์ด์ธํธ์ ์ญํ ์ ํด์ผํ ์๋ ์๋ค. ์๋ JAVA์์๋ URLConnect๋ HTTPClient ๊ฐ์ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ..
2024.01.16
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
Spring websocket chatting server ๋ง๋ค๊ธฐ 2๋จ๊ณ - ๊ณ ๋ํ
๋ณธ ํ๋ก์ ํธ๋ ์คํ๋ง ์น์์ผ ์ฑํ
์๋ฒ ๋ง๋ค๊ธฐ ๋ฅผ ์ค์ตํ๋ฉฐ ๊ณต๋ถํ๊ธฐ ์ํ ํ๋ก์ ํธ ์
๋๋ค. branch ๋ณ๋ก ์ด 6๋จ๊ณ ๋ชจ๋ ์งํํ ์์ ์
๋๋ค. 0. STOMP๋ ๋ฌด์์ธ๊ฐ? Stomp๋ SimpleTextOrientedMessagingProtocol์ ์ฝ์๋ก, ํ
์คํธ ๊ธฐ๋ฐ ์๋ฐฉํฅ ํต์ ์ ํจ์จ์ ์ผ๋ก ํ๊ธฐ ์ํ ํต์ ๊ท์ฝ์ด๋ค. Stomp์ ์๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ๋ค. Stomp์๋ 3๊ฐ์ง ๊ฐ๋
์ด ์กด์ฌํ๋๋ฐ, Topic, Publisher, Subscriber๊ฐ ๊ทธ๊ฒ์ด๋ค. Topic์ ์ฐ์ฒดํต์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. publisher๋ ๋ฉ์ธ์ง ๋ฐํ์์ด๋ค. Publisher๊ฐ ์ด๋ค Topic์ EndPoint๋ก ์ก๊ณ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๋ฉด ํด๋น ์ฐ์ฒดํต์ผ๋ก ๋ฉ์ธ์ง๊ฐ ๋ค์ด๊ฐ๋ค. ์ด๋ ํด๋น Topic์ ๊ตฌ๋
ํ๊ณ ์๋ Subscriber..
2024.01.14
๋ฐฑ์๋ ๊ฐ๋ฐ/WebSocket
SpringBoot WebSocket chatting server ๋ง๋ค๊ธฐ 1๋จ๊ณ
๋ณธ ํ๋ก์ ํธ๋ ์คํ๋ง ์น์์ผ ์ฑํ
์๋ฒ ๋ง๋ค๊ธฐ ๋ฅผ ์ค์ตํ๋ฉฐ ๊ณต๋ถํ๊ธฐ ์ํ ํ๋ก์ ํธ ์
๋๋ค. branch ๋ณ๋ก ์ด 6๋จ๊ณ ๋ชจ๋ ์งํํ ์์ ์
๋๋ค. ํด๋น ๋ด์ฉ์ผ๋ก ๋ง๋ ํ๋ก๊ทธ๋จ์
๋๋ค. ์ฒซ ๋จ๊ณ๋ผ์ firstStep์ด๋ branch์ ์ ์ฅํ์์ต๋๋ค. https://github.com/dalcheonroadhead/WebSocketBEPractice/tree/firstStep 1. ์ ๊ฐ๋ 1-1 Server Logic ํด๋น ๋ธ๋ก๊ทธ์ Basic WebSocket์ ์ ๊ฐ๋ ์ด๋ค. ์์ฃผ ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์์ง DB์ ์ฐ๊ฒฐํ์ง ์๊ณ , ์๋น์ค์ ์ปจํธ๋กค๋ฌ, ๋ชจ๋ธ, ์น์์ผ ์ค์ ๋๋ ํ ๋ฆฌ๋ง ํ์ํ๋ค. 1-2 Server์ Client ์ ์ฒด Logic ๋จผ์ ๋ด๊ฐ ํท๊ฐ๋ ธ๋ ๋ถ๋ถ์ Rest API์ ์์ผ์ด ๋ค๋ฅธ ์ฅ์์์ ma..
2024.01.07
๋ฐฑ์๋ ๊ฐ๋ฐ/WebSocket
Spring Di ํ์ฉํ๊ธฐ - ์ด๋ก (1)
Beans๊ฐ ๋ฌด์์ธ์ง ์์๋ณธ๋ค. Application Context๊ฐ ๋ฌด์์ธ์ง ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ๊ทธ ์๋ฆฌ, ์ข
๋ฅ์ ๋ํด์๋ ์์๋ณธ๋ค. 1. Beans๋? (1) Beans์ ์ญ์ฌ ์ฒ์์ Java์ ๊ฐ๋ฐ์ง์ธ SUNS์์ JavaBeans๋ฅผ ๋ฐํํ๋ค. JavaBeans๋ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ ์ปดํฌ๋ํธ๋ฅผ ๋งํ๋ค. Beans๋ Client ์ธก๋ฉด (Front-end), ์๋ฒ ์ธก๋ฉด (Back-end) ๊ฐ๊ฐ ๋๋์ด์ ์ฐ์๋ค. ์๋ ๊ฐ๋ฐ์ง๋ค์ Beans๊ฐ Client GUI์์ ๋ง์ด ์ฌ์ฉ๋๊ธธ ๋ฐ๋ฌ๋ค. ์๋ฅผ ๋ค์ด ๊ฒ์์ฐฝ์ ๋๊ฐ ๋ง๋ค์ด ๋์ผ๋ฉด ๋๊ตฐ๊ฐ ๊ทธ๊ฒ์ ์ฌ์ฌ์ฉํ๋๋ก ํ๋ ๊ฒ์ด๋ค. ๊ทผ๋ฐ Clinet GUI ํํธ์์์ Beans๋ ๋ด์ฉ์ด ๋๋ฌด ๋ณต์กํด์, ์ฌ๋๋ค์ด ์๋ฌด๋ ์ฐ์ง ์์ ๋งํ๋ค. ๋๋ ค ์๋ฒ ์ธก๋ฉด์์ Beans๊ฐ ๊ฐ๊ด๋ฐ..
2023.03.31
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
DI ํ์ฉํ๊ธฐ - ์ค์ต
0. ์ง๊ธ๊น์ง ํ ๊ฒ๋ค ์ง๊ธ๊น์ง๋ DI๋ผ๋ ์ปดํจํฐ ๋ณธ์ฒด์ ๋ด๋ถ๋ฅผ ๋ฏ์ด ๋ดค๋ค. Main1์ Di์ ๊ฐ๋
: ์ธ๋ถ์์ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ์์ค์ฝ๋ ๋ด๋ถ๋ก ์ฃผ์
ํ๋ค๋ ๊ฒ ์ด๋ค ์๋ฏธ์ธ์ง ์์๋ณด์๋ค. Config.txt๋ผ๋ ๋ฌธ์์ ๊ฐ์ฒด์ด๋ฆ = "ํด๋น ๊ฐ์ฒด ๊ตฌํํ๋ ํด๋์ค์ ๊ฒฝ๋ก์ฃผ์" ๋ก ๊ฐ๋ค์ ์ ์ฅํด๋๋๋ค. ๊ทธ๋ฌ๋ฉด Main1 ๋ด๋ถ์ ํจ์๊ฐ ๋ฌธ์ ๋ด์ฉ์ ๋ฐ์์์, ๊ฒฝ๋ก์ฃผ์๋ฅผ ReflectionApi๋ฅผ ์ด์ฉํด ๋ฉํ๋ฐ์ดํฐ๋ก ์ง์ง ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ๋ฐํํ๋ค. ์ฐ๋ฆฌ๋ new ์ ์ธ ์์ด ํด๋น ๋งค์๋๋ง์ ์ด์ฉํด ๊ฐ์ฒด ์์ฑ์ด ๊ฐ๋ฅํด์ก๋ค. Main2๋ ๊ฐ์ฒด ์ ์ฅ์๋ผ๋ ๊ฐ๋
์ ์๊ฐ ํ๊ณ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ๋ก์ง์ ์ค๋ช
ํ๋ค. ๊ฐ์ฒด ์ ์ฅ์๋ Config.txt์ ๋ด์ฉ์ Map ํํ๋ก ์ผ๋จ ๋ฐ์์จ๋ค. ๊ทธ๋ฌ๋ฉด Key๋ ๊ฐ์ฒด์ด๋ฆ, Value..
2023.03.30
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC