์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- ํ๋ก์ ํธ
- heapq
- JS
- javascript
- ํ ์ดํ๋ก์ ํธ
- ๊ฐ๋ฐ
- ๊ตญ๋น์ง์
- react
- ํ๋ก ํธ์๋
- ๋ฐฑ์ค
- mongodb
- ์๊ณ ๋ฆฌ์ฆ
- CSS
- Til
- ์ฝ๋ฉ์ ํ
- ์ฝ๋ฉํ ์คํธ
- node.js
- HTML
- ์ฝ๋ฉ
- ํ๋ก๊ทธ๋๋จธ์ค
- Python
- fe
- ๋ชจ๊ฐ์ฝ
- ๋ ธ๋ง๋์ฝ๋
- ํ์ด์ฌ
- ๋๋ฆผ์ฝ๋ฉ
- ํฌ๋กค๋ง
- error
- ๊ทธ๋ฆฌ๋
- KDT
- Today
- Total
๋ชฉ๋กServer/Java & Spring (8)
๐ฑ → ๐ณ

์์์ฑ ์ปจํ ์คํธ ์ด์ 1. 1์ฐจ ์บ์ ์กฐํ JPA๋ DB๋ฅผ ์ง์ ์กฐํํ๋ ๊ฒ์ด ์๋๋ผ 1์ฐจ ์บ์, ์ฆ ์์์ฑ ์ปจํ ์คํธ๋ฅผ ์ฐ์ ์ ์ผ๋ก ์กฐํํ๋ค. ๋ฐ๋ผ์ DB์ I/O ๋ถ๋ด์ด ์ ๊ฒ ๋ฐ์ํ์ฌ ์ฑ๋ฅ์ ์ด์ ์ด ์๋ค๋ ๊ฒ์ด JPA์ ์ฅ์ ์ด๋ผ ํ ์ ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก JPA๋ Entity์ PK๋ฅผ ์ด์ฉํ์ฌ ์๋ณ์ ํ๊ฒ ๋๋ฉฐ, 1์ฐจ ์บ์์๋ ๊ณ ์ ์๋ณ์ ๊ฐ์ผ๋ก ์ํฐํฐ๋ฅผ ์ ์ฅํ๊ณ ์๋ค. JPA์ findById() ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ๋๋ฉด ์ฐ์ , 1์ฐจ ์บ์์์ ์๋ณ์ ๊ฐ์ผ๋ก ์ ์ฅ๋ Entity๋ฅผ ์ฐพ๊ณ 1์ฐจ ์บ์์ ์กด์ฌํ๋ฉด ํด๋น ๊ฐ์ฒด๋ฅผ ๋ฆฌํด, ์กด์ฌํ์ง ์๋๋ค๋ฉด DB์ ์ง์ ์กฐํํด 1์ฐจ ์บ์์ ์ ์ฌํ ํ ํด๋น ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๋ค. 2. ๋์ผ์ฑ ๋ณด์ฅ 3. ํธ๋์ญ์ ์ ์ง์ํ๋ ์ฐ๊ธฐ ์ง์ฐ 4. ๋ณ๊ฒฝ ๊ฐ์ง(Dirty Checking) J..
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)์ด๋? ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ: OOP(Object Oriented Programing) ์ ์ฐจ์งํฅ์ -> ๊ฐ์ฒด์งํฅ์ ๊ฐ์ฒด: ๋์ (๋ถ์ด๋นต)ํด๋์ค: ๊ณตํต๋ ์์ฑ๋ค์ ์ ์ (๋ถ์ด๋นต ํ) OOP: ๊ฐ์ฒด๋ค์ ์ ๊ธฐ์ ์ผ๋ก ์ฐ๊ฒฐํ ํ๋ก๊ทธ๋๋ฐ OOP์ 4๊ฐ์ง ํน์ง ์ถ์ํ ์ถ์ํ๋ ๊ฐ์ฒด๋ค์ ๊ณตํต๋ ํน์ง์ ํ์ ํด ์ ์ํด ๋์ ์ค๊ณ ๊ธฐ๋ฒ ๋ชฉ์ ๊ณผ ๊ด๋ จ์ด ์๋ ๋ถ๋ถ์ ์ ๊ฑฐํ์ฌ ํ์ํ ๋ถ๋ถ๋ง์ ํํํ๊ธฐ ์ํ ๊ฐ๋ ์ด๋ค. ์บก์ํ ํ๋์ ๊ฐ์ฒด์ ๋ํด ๊ทธ ๊ฐ์ฒด๊ฐ ํน์ ํ ๋ชฉ์ ์ ์ํ ํ์ํ ๋ณ์๋ ๋ฉ์๋๋ฅผ ํ๋๋ก ๋ฌถ๋ ๊ฒ ๋ถํ์ํ ์ ๋ณด๋ฅผ ๊ฐ์ถ ์ ์์: ์ ๋ณด์๋(private) ์์ ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์ ์์ ํด๋์ค์์ ๋ฌผ๋ ค๋ฐ์ ์ฌ์ฉํ๋ ๊ฒ ๋จ์ผ ์์ (๋ค์ค ์์์ด ์ธํฐํ์ด์ค์ ๋ชฉ์ ์ ์๋๋ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋ค..

ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์ฌ์ง, ๋์์๊ณผ ๊ฐ์ ๋ฏธ๋์ด ํ์ผ๋ค์ AWS์ S3์ ์ ์ฅํ๊ธฐ ์ํ์ฌ application.yml ํ์ผ์ S3์ ๊ด๋ จ๋ ์ธ์ฆ ์ ๋ณด๋ค์ ์ถ๊ฐํ๋ค. ๋ก์ปฌ์์๋ ์ ๋์๊ฐ๋๋ฐ github actions๋ฅผ ํตํด ci/cd ๊ตฌ์ถํ์ ๋ฌธ์ ๋ฐ์ ๊ทธ๋ฌ๋๊น ๋ฐฐํฌํ๋ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ ๊ฐ๋ค ๊ทผ๋ฐ ์ผ๋จ ๋ฐฐํฌ๋ ์ ๋จ codedeploy์์๋ ์ฑ๊ณต ps -ef | grep jar ๋ช ๋ น์ด๋ก ์คํ์ค์ธ jar ํ์ผ ํ์ธ ์ฒ์์๋ ์ ๋๋ก ๋์๊ฐ๋ ๋ฏ ํ์ผ๋ 10์ด ์ ๋ ๋ค์ ๋ค์ ํ์ธํด๋ณด๋ฉด ๊บผ์ง๋ ๊ฒ์ ํ์ธํ ์ ์๋ค ์ .. ์ด๊ฑฐ ์ง๊ธ application์ด ๋์๊ฐ๋๋ฐ ์คํจํ๊ฑฐ๊ตฌ๋ ๊ฐ์ ๋ก ๋ค์ java ์คํ์์ผ๋ณด์ ์ญ์๋ .. application run failed ์๊ตฌ๋ ^^ . . . ๋ชจ๊ฐ ๋ฌธ..

UT๋ฅผ ํตํด ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์์ฒญ์ด ๊ฐ์ฅ ๋ง์ด ๋ค์ด์ค๋ Service์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์กฐํํ ์ ์๋๋ก Server side caching์ ์ ์ฉํ์ฌ ์ฑ๋ฅ์ ํฅ์ ์์ผฐ์ต๋๋ค. @Cacheable์ ์ฌ์ฉํด์ ์๋น์ค์์ ๊ฐ์ฅ ์กฐํ๊ฐ ๋ง์ด ์๊ธฐ๋ ๊ณต๊ณ ์กฐํ ๋ก์ง์ Redis๋ฅผ ์ด์ฉํ์ฌ ์บ์ฑ์ฒ๋ฆฌ // ๋ ๋์ค ์บ์ @Bean public RedisCacheManager redisCacheManager() { RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration .defaultCacheConfig() .disableCachingNullValues() .serializeValuesWith( RedisSerializationContext...
Spring ํ๋ ์์ํฌ์ JPA(Java Persistense API)๋ฅผ ์ฌ์ฉํ ๋, ์ํฐํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ ๋ save()์ saveAndFlush() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๐save() ์ํฐํฐ๋ฅผ ์์์ฑ ์ปจํ ์คํธ์ ์ ์ฅํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ์์ ์ ์ง์ฐ์ํด ์ฆ, ํธ๋์ญ์ ์ด ์ปค๋ฐ๋๊ธฐ ์ ๊น์ง ์ํฐํฐ๋ ์์์ฑ ์ปจํ ์คํธ์๋ง ์กด์ฌํ๊ฒ ๋จ ์ด ๋๋ฌธ์ save() ๋ฉ์๋๋ฅผ ํธ์ถํด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์๋์ง ์์ ์ ์๋ค. ๐saveAndFlush() ์ํฐํฐ๋ฅผ ์์์ฑ ์ปจํ ์คํธ์ ์ ์ฅํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ๋ก ์ ์ฅํ๋ ์์ ์ํ ์ฆ, saveAndFlush() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ๋ฐ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํฐํฐ๊ฐ ๋ฐ์๋จ ์ด ๋๋ฌธ์ saveAndFlush() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์๋๋ ์์ ์ ๋..
IoC(Inversion of Control)๋? IoC๋ Inversion of Control์ ์ค์ ๋ง๋ก, ์ ์ด์ ์ญ์ ์ด๋ผ๋ ๋ป์ด๋ค. ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ๊ฐ๋ฐ์๊ฐ ์ ์ดํ์ง ์๊ณ , ํ๋ก๊ทธ๋จ์ด๋ ํ๋ ์์ค์ด ์ง์ ์ ์ด๋ฅผ ํ๋ค๋ ๋ง์ด๋ค. ์ปดํฌ๋ํธ์ ์์กด ๊ด๊ณ ๊ฒฐ์ (Component dependency resolution), ๊ฐ์ฒด์ ์๋ช ์ฃผ๊ธฐ(life cycle)์ ๊ฐ์ ์ผ์ ๋์ ์ํํด์ค๋ค. ํํ ์คํ๋ง ํ๋ ์์ค์ ์ด์ฉํด์ ๊ฐ๋ฐํ ๋ ์ฌ๋ฌ๊ฐ์ง Bean์ ์ฌ์ฉ ํ ๊ฒ์ด๋ค. ์ฌ์ฉ์์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด, ์์ฒญ์ ์๋ง์ Bean์ ์์ฑํด์ ํ์ํ ์ผ์ ํ๋๋ก ์ํจ๋ค. ํด๋น Bean์ด ํ ์ผ์ ๋ง์น๋ฉด Bean์ ์ญ์ ํด์ค๋ค. ํ์ง๋ง ์ด๋ฐ ๊ฐ์ฒด์ ์์ฑ๊ณผ ์๋ฉธ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง ์ ํ์๊ฐ ์๋ค. ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ์ ์ด ํ ..
private final ProductService productservice ๋ฌธ๋ ์์กด์ฑ ์ฃผ์ ์ ํ๋ค๊ฐ final์ ์จ์ฃผ๋ ์ด์ ๊ฐ ๊ถ๊ธํด์ก๋ค . ์์กด์ฑ ์ฃผ์ (Dependency Injection)์์ final ํค์๋๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค. ๋ถ๋ณ์ฑ(Immutability) final ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ๋ณ์๊ฐ ํ ๋ฒ ์ด๊ธฐํ๋ ์ดํ์๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๊ฒ ๋๋ค. ์ด๋ ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ถ๋ณํ๊ฒ ์ ์งํ๊ณ , ๊ฐ์ฒด์ ๋ถ๋ณ์ฑ(Immutability)์ ๋ณด์ฅํ๋ ๋ฐ ๋์์ด ๋๋ค. ์์กด์ฑ ์ฃผ์ ์์๋ ์ฃผ์ ๋ ๊ฐ์ฒด์ ์ํ๊ฐ ๋ณ๊ฒฝ๋์ง ์๋๋ก ํ๋ ๊ฒ์ด ์ค์ํ๊ธฐ ๋๋ฌธ์ final ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด์ ๋ถ๋ณ์ฑ์ ๋ณด์ฅํ ์ ์๋ค. ์์ ์ฑ(Safety) final ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ๋ณ์์ ์ด๊ธฐํ ์ฌ๋ถ๋ฅผ..

์ด์ ๋ธ๋ฆฌ : ๊ธฐ๊ณ ๋ช ๋ น์ด์ ์ผ์ ์ฉ์ด๋ฅผ ์ผ๋์ผ๋ก ๋งค์นญํ๋ ๊ธฐ๊ณ์ด์ ๋๋ชจ๋์ ๋งค์นญ ์ฝ๋ํ CPU ๋ง๋ค ์คํํ ์ ์๋ ๊ธฐ๊ณ์ด๊ฐ ๋ฌ๋๊ธฐ ๋๋ฌธ์ ์ด์ ๋ธ๋ฆฌ์ด๋ ๋ค๋ฅด๊ฒ ๋ง๋ค์ด ์ฃผ์์ ์ด์ ๋ธ๋ฌ : ์ด์ ๋ธ๋ฆฌ์ด๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํด ์ฃผ๋ ์ํํธ์จ์ด C์ธ์ด์ ๋ฑ์ฅ ์ด์ ๋ธ๋ฆฌ์ด๋ก ๊ฐ๋ฐ์ ํ ๋๋ ๊ฐ์ ์์ ์ ์ํํ๋ ์์ค ํ์ผ์ ๊ฐ ๊ธฐ๊ณ์ ์ข ๋ฅ๋งํผ ๋ง๋ค์ด์ผ ํ์ง๋ง C์ธ์ด์ ๋ฑ์ฅ์ผ๋ก ์์คํ์ผ์ ๋จ ํ๋๋ง ๋ง๋ค์ด๋ ๋๋ ์๋๊ฐ ๋์์ ํ์ง๋ง, ์ด์์ฒด์ ๋ค์ ๊ฐ ํน์ฑ๋ณ๋ก ์์ค์ฝ๋๋ฅผ ์์ ํด์ผํ๋ ์ํฉ ๋ฐ์ Java์ ๋ฑ์ฅ Java๋ ๊ฐ์ฒด์งํฅ ์ธ์ด (Class) ๋จ ํ๋์ ์์ค ํ์ผ๋ก ๋ชจ๋ ๊ธฐ์ข ์ ์ปดํจํฐ์์ ์คํ ๊ฐ๋ฅ ๐ก ์ปดํ์ผ์ด๋? ์ฌ๋์ด ์ดํดํ๋ ์ธ์ด๋ฅผ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ์ธ์ด๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ณผ์ ์ฃผ์ด์ง ์ธ์ด๋ก ์์ฑ๋ ์ปดํจํฐ ํ๋ก๊ทธ..