๐ Language
![Spring๊ณผ SpringBoot](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdknsKM%2Fbtq4qzyDkXQ%2FyCfXa8vgcPuPR5tjEqITy1%2Fimg.png)
Spring๊ณผ SpringBoot
์คํ๋ง๊ณผ ์คํ๋ง ๋ถํธ๋ versus๊ฐ ์๋๋ผ with์ด๋ค. 1. Spring ์คํ๋ง ํ๋ ์์ํฌ๋ ์๋ฐ์์ ๊ฐ์ฅ ๋์ค์ ์ธ ์์ฉํ๋ก๊ทธ๋จ ๊ฐ๋ฐ ํ๋ ์์ํฌ์ด๋ค. 1) ํน์ง ๊ฐ์ฅ ์ค์ํ ํน์ง์ ์์กด์ฑ ์ฃผ์ (Dependency Injection)๊ณผ ์ ์ด์ ์ญ์ (Inversion Of Control)์ด๋ค. ์ด๋ฌํ ๊ฐ๋ฐ ๋ฐฉ์์ ์ฌ์ฉํ๋ค๋ฉด ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ ์ ์๊ณ ๋จ์ ํ ์คํธ๋ฅผ ์ฉ์ดํ๊ฒ ํ์ฌ ํ๋ฆฌํฐ ๋์ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ์ ์๋ค. // 1. DI ์๋ ์์ : ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ๋๊ฐ ๋๋ค. // MyController๋ MyService ํด๋์ค์ ์์กดํ๋ค. // ๊ทธ๋์ ์ธ์คํด์ค๋ฅผ ์ป๊ธฐ ์ํด์ new MyService();๋ก ๊ฐ์ฒด์ ์ธ์คํด์ค๋ฅผ ์ป์ด์ผ ํ๋ค. // ๊ทธ๋ฐ๋ฐ MyController์ ๋ํ ๋จ์ ํ ์คํธ๋ฅผ ์ํด Mock..
![[JAVA] ์
์ถ๋ ฅ ์คํธ๋ฆผ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F97On4%2Fbtq3KeuUVjA%2F6RGOBVLbw1O6KYLolQ7UbK%2Fimg.png)
[JAVA] ์ ์ถ๋ ฅ ์คํธ๋ฆผ
์ ์ถ๋ ฅ ์คํธ๋ฆผ 1. ์ ์ถ๋ ฅ ์คํธ๋ฆผ ์๋ฐ์์ ๋ฐ์ดํฐ๋ ์คํธ๋ฆผ์ ํตํด ์ ์ถ๋ ฅ๋๋ค. ์คํธ๋ฆผ์ ๋จ์ผ ๋ฐฉํฅ์ผ๋ก ์ฐ์์ ์ผ๋ก ํ๋ฌ๊ฐ๋ ๊ฒ์ ๋งํ๋๋ฐ ๋ฌผ์ด ๋์ ๊ณณ์์ ๋ฎ์ ๊ณณ์ผ๋ก ํ๋ฅด๋ฏ์ด ๋ฐ์ดํฐ๋ ์ถ๋ฐ์ง์์ ๋์ฐฉ์ง๋ก ํ๋ฌ๊ฐ๋ค. ์ด๋, ํ๋ก๊ทธ๋จ์ด ์ถ๋ฐ์ง๋ ๋์ฐฉ์ง๋์ ๋ฐ๋ผ์ ์ฌ์ฉํ๋ ์คํธ๋ฆผ์ ์ข ๋ฅ๊ฐ ๊ฒฐ์ ๋๋ค. ํ๋ก๊ทธ๋จ์ด ๋์ฐฉ์ง์ด๋ฉด ํ๋ฌ์จ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ๋ฐ์์ผ ํ๋ฏ๋ก ์ ๋ ฅ ์คํธ๋ฆผ์ ์ฌ์ฉํ๊ณ ๋ฐ๋๋ก ํ๋ก๊ทธ๋จ์ด ์ถ๋ฐ์ง๋ฉด ์ถ๋ ฅํด์ผ ํ๋ฏ๋ก ์ถ๋ ฅ ์คํธ๋ฆผ์ ์ฌ์ฉํ๋ค. 2. ์ ์ถ๋ ฅ ์คํธ๋ฆผ์ ์ข ๋ฅ java.io ํจํค์ง์๋ ์ฌ๋ฌ ๊ฐ์ง ์ข ๋ฅ์ ์คํธ๋ฆผ ํด๋์ค๋ฅผ ์ ๊ณตํ๊ณ ์๋ค. 1) ๋ฐ์ดํธ(Byte) ๊ธฐ๋ฐ ์คํธ๋ฆผ ๊ทธ๋ฆผ, ๋ฉํฐ๋ฏธ๋์ด ๋ฑ์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ถ๋ ฅํ ๋ ์ฌ์ฉํ๋ค. InputStream: ์ ๋ ฅ ์คํธ๋ฆผ ์ต์์ ํด๋์ค OutputSt..
![[JAVA] ์ปฌ๋ ์
ํ๋ ์์ํฌ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6yNCS%2Fbtq3bu64bdE%2FFErJFe7pJxgA0Id7Bo95Kk%2Fimg.png)
[JAVA] ์ปฌ๋ ์ ํ๋ ์์ํฌ
์ปฌ๋ ์ ํ๋ ์์ํฌ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ฒด๋ค์ ํจ์จ์ ์ผ๋ก ์ถ๊ฐ, ์ญ์ , ๊ฒ์ํ ์ ์๋๋ก ์ธํฐํ์ด์ค์ ๊ตฌํ ํด๋์ค๋ฅผ java.util ํจํค์ง์์ ์ ๊ณตํ๋๋ฐ, ์ด๋ค์ ์ด์นญํด์ ์ปฌ๋ ์ ํ๋ ์์ํฌ๋ผ ๋ถ๋ฅธ๋ค. ์ปฌ๋ ์ ์ ๊ฐ์ฒด์ ์ ์ฅ์ ๋ปํ๊ณ ํ๋ ์์ํฌ๋ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ ํด๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋งํ๋๋ฐ ์ปฌ๋ ์ ํ๋ ์์ํฌ๋ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ ์ํ ์ธํฐํ์ด์ค์ ์ค์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ ๋ค์ํ ์ปฌ๋ ์ (๊ตฌํ) ํด๋์ค๋ฅผ ์ ๊ณตํ๋ค. 1. List ์ปฌ๋ ์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ ๋ ์๋ ์ธ๋ฑ์ค๊ฐ ๋ถ์ฌ๋๋ฉฐ ์ด ์ธ๋ฑ์ค๋ก ๊ด๋ฆฌ๋๋ค. ๊ฐ์ฒด ์์ฒด๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ์๋ ๊ฐ์ฒด์ ๋ฒ์ง๋ฅผ ์ฐธ์กฐํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ null๊ณผ ์ค๋ณต ์ ์ฅ๋ ์ ์๋ค. ๋ฐฐ์ด๊ณผ ๋ค๋ฅด๊ฒ ์ ์ฅ ์ฉ๋์ด ์๋์ผ๋ก ์ฆ๊ฐํ๋ค. ๋ฉ์๋ ์ค๋ช boolean add(E e) ์ฃผ์ด์ง ๊ฐ์ฒด๋ฅผ ๋งจ ๋์ ์ถ๊ฐํฉ..
![[JAVA] ์ค๋ ๋](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVDpq1%2Fbtq2Lk4NPZD%2FqgWVZSHIP1FF0I7gD8hY9K%2Fimg.png)
[JAVA] ์ค๋ ๋
์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ฉด ์ด์์ฒด์ ๋ก๋ถํฐ ์คํ์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ๋๋ฐ, ์คํ ์ค์ธ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ก์ธ์ค๋ผ ํ๊ณ ํ๋ก์ธ์ค ๋ด๋ถ์์ ์ฝ๋์ ์คํ ํ๋ฆ์ ์ค๋ ๋๋ผ ํ๋ค. 1. ๋ฉํฐ ์ค๋ ๋ ์ด์์ฒด์ ๋ ๋ฉํฐ ํ์คํน์ ํ ์ ์๋๋ก CPU ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์์์ ํ๋ก์ธ์ค๋ง๋ค ์ ์ ํ ํ ๋นํด์ฃผ๊ณ ๋ณ๋ ฌ๋ก ์คํ์ํจ๋ค. ์ด๋ ๋ฉํฐ ํ์คํน์ด ๊ผญ ๋ฉํฐ ํ๋ก์ธ์ค๋ฅผ ๋ปํ๋ ๊ฒ์ ์๋๋ค. ๋ฉํฐ ํ๋ก์ธ์ค๋ ํ๋ ์ด์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์์ ๋ณ๋ ฌ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋งํ๋ค. ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๋ฉํฐ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค๊ธฐ๋ ํ๋ค. ์๋ฅผ ๋ค์ด ์ด๋ค ์ ํ๋ฆฌ์ผ์ด์ ์ 2๊ฐ ์คํํ๋ค๋ฉด 2๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋ ๊ฒ์ด๋ค. ํ ํ๋ก์ธ์ค ๋ด์์ ๋ฉํฐ ํ์คํน์ ํ ์ ์๋๋ก ๋ง๋ค์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ๋ ์๋ค. ๋ํ์ ์ผ๋ก ๋ฏธ๋์ด ํ๋ ์ด์ด๋ ๋์์ ์ฌ์๊ณผ ..
![[JAVA] ๊ธฐ๋ณธ API ํด๋์ค](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoCpdU%2Fbtq2LlJpF68%2F7hARhGldKAtthqPNmtl2m0%2Fimg.png)
[JAVA] ๊ธฐ๋ณธ API ํด๋์ค
๊ธฐ๋ณธ API ํด๋์ค API๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋๋ฐ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์ ์์ฃผ ์ฌ์ฉ๋๋ ํด๋์ค ๋ฐ ์ธํฐํ์ด์ค์ ๋ชจ์์ ๋งํ๋ค. 1. java.lang ํจํค์ง ์๋ฐ ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ณธ์ ์ธ ํด๋์ค๋ฅผ ๋ด๊ณ ์๋ ํจํค์ง์ด๋ค. java.lang ํจํค์ง์ ์๋ ํด๋์ค์ ์ธํฐํ์ด์ค๋ import ์์ด ์ฌ์ฉํ ์ ์๋ค. 1) Object ํด๋์ค ์๋ฐ ํด๋์ค์ ์ต์์ ํด๋์ค๋ก ์ฌ์ฉ๋๋ฏ๋ก ๋ชจ๋ ํด๋์ค๋ Object ํด๋์ค์ ์์์ด๊ฑฐ๋ ์์ ํด๋์ค์ด๋ค. ์๋ก์ด ํด๋์ค๋ฅผ ์ ์ธํ ๋ ๋ค๋ฅธ ํด๋์ค๋ฅผ ์์ํ์ง ์๋๋ผ๋ ์์์ ์ผ๋ก Object ํด๋์ค๋ฅผ ์์ํ๊ฒ ๋๋ค. Object ํด๋์ค์ ํ๋๋ ์กด์ฌํ์ง ์๊ณ ์์ฑ์์ ๋ฉ์๋๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ๋ชจ๋ ๊ฐ์ฒด๋ Object ํ์ ์ผ๋ก ์๋ ํ์ ๋ณํ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋งค๊ฐ ํ์ ์ Object..
[JAVA] ์ค์ฒฉ ํด๋์ค์ ์ค์ฒฉ ์ธํฐํ์ด์ค
์ค์ฒฉ ํด๋์ค์ ์ค์ฒฉ ์ธํฐํ์ด์ค ํด๋์ค๋ค์ ์๋ก ๊ธด๋ฐํ ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์ํธ์์ฉ์ ํ๋ค. ํด๋์ค๊ฐ ์ฌ๋ฌ ํด๋์ค์ ๊ด๊ณ๋ฅผ ๋งบ๋ ๊ฒฝ์ฐ์๋ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์ธํ๋ ๊ฒ์ด ์ข์ผ๋ ํน์ ํด๋์ค์ ๊ด๊ณ๋ฅผ ๋งบ์ ๊ฒฝ์ฐ์๋ ํด๋์ค ๋ด๋ถ์ ์ ์ธํ๋ ๊ฒ์ด ์ข๋ค. 1. ์ค์ฒฉ ํด๋์ค ์ค์ฒฉ ํด๋์ค๋ ํด๋์ค ๋ด๋ถ์ ์ ์ธํ ํด๋์ค๋ฅผ ๋งํ๋ค. ์ค์ฒฉ ํด๋์ค๋ฅผ ์ด์ฉํ๋ฉด ๋ ํด๋์ค์ ๋ฉค๋ฒ๋ค์ ์๋ก ์ฝ๊ฒ ์ ๊ทผํ ์ ์๊ณ ์ธ๋ถ์๋ ๋ถํ์ํ ๊ด๊ณ ํด๋์ค๋ฅผ ๊ฐ์ถค์ผ๋ก์จ ์ฝ๋์ ๋ณต์ก์ฑ์ ์ค์ผ ์ ์๋ค. class ClassNameA { // 1. ์ธ์คํด์ค ๋ฉค๋ฒ ํด๋์ค: A ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ๋ง ์ฌ์ฉํ ์ ์๋ B ํด๋์ค class NestedClassNameB { // ์์ฑ์ // ์ธ์คํด์ค ํ๋, ์ธ์คํด์ค ๋ฉ์๋ // ์ ์ ํ๋, ์ ์ ๋ฉ์๋ (๋ถ๊ฐ๋ฅ) } // ..