๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
FrameWork/Spring

Spring Framework์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๊ธฐ

by titlejjk 2023. 7. 11.

Framework ๐Ÿ‘‰

ํ‹€์—์„œ ๋™์ž‘ํ•˜๋‹ค๋Š” ๊ทธ๋ƒฅ ๋‹จ์–ด์  ์˜๋ฏธ์ธ๋ฐ ๊ณฐ๊ณฐ์ด ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ด ํ‹€์•ˆ์—์„œ (๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ณ ) ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด๋œ๋‹ค.

 

Spring์€ ์˜คํ”ˆ์†Œ์Šค๐Ÿ‘‰

Spring์˜ ์˜คํ”ˆ์†Œ์Šค์˜ ์˜๋ฏธ๋Š” ๋‚ด๋ถ€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค ๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค.  ์ฆ‰ ๋‚ด๋ถ€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ถˆํŽธํ•œ ์ ์ด ์žˆ๋‹ค๋ฉด ์ˆ˜์ •ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.(์–ด๋‚˜๋”๋ ˆ๋ฒจ..)

 

Spring์€ IoC ์ปจ๋„ค์ด๋„ˆ์ด๋‹ค๐Ÿ‘‰

์–ด์ฐŒ๋ณด๋ฉด Spring์˜ ๊ฐ€์žฅ ํ•ต์‹ฌ ์ด๋‹ค.IoC๋Š” Inversion of Controll ์ฆ‰ ์ œ์–ด์˜ ์—ญ์ „์ด๋‹ค. ์ฃผ๋„๊ถŒ์ด ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋‹Œ Spring์— ์žˆ๋‹ค.

Class๋Š” ์„ค๊ณ„๋„ Object๋Š” ์‹ค์ฒดํ™”๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒƒ Instance๋Š” ์‹ค์ฒดํ™” ๋œ ๊ฒƒ

Spring์ด heap ์˜์—ญ์— Object๋ฅผ ์ฝ์–ด์„œ Memory์— ์˜ฌ๋ ค์ค€๋‹ค. Spring์ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ์ค€๋‹ค.

Spring๐Ÿ‘‰

Class B{

	@Autowired
    A a;
}

Java๐Ÿ‘‰

Class C{

	A A = new A();
}

ํ•˜์ง€๋งŒ Java์—์„œ ์ฒ˜๋Ÿผ ์ƒ์„ฑ๋œ A๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์—์„œ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์ด๊ธฐ์— ์ „ํ˜€ ๋‹ค๋ฅธ A์ด๋‹ค.

 

 

Spring์€ DI๋ฅผ ์ง€์›ํ•ด์ค€๋‹ค๐Ÿ‘‰

Dependency Injection์˜์กด์„ฑ์ด๋ผ๋Š” ์˜๋ฏธ์ธ๋ฐ, IoC๋กœ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” Springํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ธฐ๋Šฅ์œผ๋กœ ์ธํ•ด ์˜์กด์„ฑ ์ฃผ์ž…์œผ๋กœ ํ•„์š”ํ•œ ๊ณณ์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

 

Spring์˜ Filter?๐Ÿ‘‰

๊ฒ€์—ด์˜ ๊ธฐ๋Šฅ์„ Filter๋ผ ํ•œ๋‹ค. ๊ฐ Filter์— ๊ถŒํ•œ์„ ๋ถ€์—ฌ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. Spring์ž์ฒด์˜ Filter๋„ ์กด์žฌํ•˜๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ž„์˜๋กœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ํ†ฐ์บฃ์˜ Filter๋Š” web.xml Spring์˜ Filter๋Š” Interceptor๋ผ๊ณ  ํ•œ๋‹ค.

 

Spring์€ ์ˆ˜๋งŽ์€ ์–ด๋…ธํ…Œ์ด์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.๐Ÿ‘‰

์–ด๋…ธํ…Œ์ด์…˜์€ ์ฃผ์„์ด์ง€๋งŒ ์–ด๋…ธํ…Œ์ด์…˜์˜ ์ฃผ์„์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฌด์–ธ๊ฐ€๋ฅผ checkํ•  ์ˆ˜ ์žˆ๋„๋ก hint๋ฅผ ์ฃผ๋Š” ๊ฐœ๋…์ด๋‹ค. ์ž๋ฐ”์—์„œ๋Š” @Override๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€๋งŒ Spring์—์„œ๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด @Component,@Autowired, @Bean, @Controller๋“ฑ๋“ฑ ์ด ์žˆ์œผ๋ฉด ๋ฏธ๋ฆฌ ์•ฝ์†ํ•ด๋‘” ๊ฐ์ฒด(์ด ๊ฐ์ฒด๋“ค์€ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ ธ ์žˆ์œผ๋ฉฐ ๊ธฐ๋Šฅ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด ์–ด๋…ธํ…Œ์ด์…˜ @Autuwired๊ฐ€ ์–ด๋Š ํด๋ž˜์Šค์— ๋˜์–ด์žˆ๋‹ค๋ฉด ๊ทธ ํด๋ž˜์Šค๋‚ด๋ถ€๋ฅผ ๋ฆฌํ”Œ๋ ‰์…˜(๋ถ„์„)์„ ํ†ตํ•ด ๊ทธ ๋‚ด๋ถ€์˜ ํ•„๋“œ, ์–ด๋…ธํ…Œ์ด์…˜, ๋ฉ”์„œ๋“œ๋“ค์„ Checkํ•œ ํ›„์— ์ฝ์–ด ๋“ค์ด๊ฑฐ๋‚˜ ๋™์ž‘์„ ์„ค์ • ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Spring์€ MessageConverter(์ดํ•˜ ๋ฉ”์„ธ์ง€ ์ปจ๋ฒ„ํ„ฐ)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.๐Ÿ‘‰

์ค‘๊ฐ„ ์–ธ์–ด์ธ JSON์„ ์‚ฌ์šฉํ•œ๋‹ค. Java์–ธ์–ด๋ฅผ ์ค‘๊ฐ„์— JSON์œผ๋กœ ๋ฐ”๊ฟ”์„œ ๋‹ค๋ฅธ Object๋กœ ๋ฐ”๊ฟ”์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Spring์€ BufferedReader์™€ BufferedWriter๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.๐Ÿ‘‰

๊ฐ ๋‚˜๋ผ๋งˆ๋‹ค ์‚ฌ์šฉํ•˜๋Š” byte์ˆ˜๊ฐ€ ๋‹ค๋ฅด๋‹ค ์„ธ๋ฐ€ํ•˜๊ฒŒํ•˜๋ฉด ์˜์–ด๊ถŒ์€ 8bit->1byte ํ•œ๊ตญ์€ 16bit->2byte ์ค‘๊ตญ์€ 24bit->3byte๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ๋•Œ(์ด๋ฅผ Byte Stream์ด๋ผ ํ•œ๋‹ค.)1Byte(8bit)๋กœ ์ฝ์–ด ๋“ค์ด๋Š”๋ฐ, ์ด๋ฅผ Java์—์„œ๋Š” InputStream์œผ๋กœ ์ฝ์–ด๋“ค์ธ๋‹ค.

์ด๋ฅผ Java๋Š” byte๋ฅผ Char๋กœ ์บ์ŠคํŒ…ํ•ด์„œ ์ฒ˜๋ฆฌํ•ด์„œ ์ฝ์–ด์•ผ ํ•˜๋Š”๋ฐ Byte๋ฅผ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ์ด๊ฒƒ์„ InputStreamReader๋ผ๊ณ  ํ•œ๋‹ค.

InputStreamReader๋Š” ๋ฐฐ์—ด๋กœ ๋ฌธ์ž๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด ๋•Œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ •ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

๊ทธ ์ด์œ ๋Š” ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์šฉ๋Ÿ‰์„ ์ ๊ฒŒํ•˜๋ฉด ๋งŽ์€ ์š”์ฒญ์ด ์™”์„ ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๊ฐ„์— ์ž˜๋ฆฌ๊ฒŒ ๋˜๊ณ 

๋งŽ์€ ์šฉ๋Ÿ‰์„ ํ•ด๋‘๋ฉด ์ ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์™”์„ ๋•Œ ์“ธ๋ชจ ์—†๋Š” ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋ž˜์„œ InputStreamReader๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ 

๊ฐ€๋ณ€๊ธธ์ด์˜ ๋ฌธ์ž๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” BufferedReader์™€ BufferedWriter๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

JSP์—์„œ๋Š” ์ฝ์„ ๋•Œ์—๋Š”reqeust.getReader ์“ธ ๋•Œ๋Š” request.getWriter์‚ฌ์šฉํ•œ๋‹ค.

@ResponseBody๋ฅผ ์‚ฌ์šฉ ํ•˜๋ฉด  BufferedWriter๊ฐ€ ๋™์ž‘

@RequestBody๋ฅผ ์‚ฌ์šฉ ํ•˜๋ฉด BufferedReade๊ฐ€ ๋™์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค.

Spring์€ ์ด๋ฅผ ํ†ตํ•ด BufferedReader์™€ BufferedWriter๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

 

๊ณต๋ถ€ํ•ด์˜จ ๊ณณ๐Ÿ‘‰

์ธํ”„๋Ÿฐ ์ตœ์ฃผํ˜ธ ๊ฐ•์‚ฌ๋‹˜์˜ ์Šคํ”„๋ง๋ถ€ํŠธ ๊ฐœ๋…์ •๋ฆฌ(์ด๋ก )ํŽธ

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC#reviews

 

๋Œ“๊ธ€