Programming 33

[Spring Security] @AuthenticationPrincipal Test Trouble Shooting

๋“ค์–ด๊ฐ€๊ธฐ ์•ž์„œ ํ˜„์žฌ ํšŒ์‚ฌ์—์„œ๋Š” ์ž์ฒด์ ์ธ ํ† ํฐ ์ƒ์„ฑ ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ์œ ์ € ํ† ํฐ์„ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ Memcached ์— ์ €์žฅํ•œ ๋’ค ์›น์ธ ๊ฒฝ์šฐ Cookie ๋ฅผ, ์•ฑ์ธ ๊ฒฝ์šฐ Http Header ์— ๋‹ด๊ธด ๊ฐ’์„ ํ†ตํ•ด ์œ ์ € ์ธ์ฆ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๋Š” ๊ตฌ์กฐ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ์Šค์ผ€์ผ ์•„์›ƒ์œผ๋กœ ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•˜๊ณ  ์žˆ์–ด ์œ ์ € ์ธ์ฆ ์ •๋ณด๋ฅผ ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„์—์„œ ํ•จ๊ป˜ ๊ณต์œ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋‹ค๋งŒ, ์œ ์ € ์ธ์ฆ/์ธ๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ Filter ๊ฐ€ ์•„๋‹Œ ๋ณ„๋„์˜ ์ธ์ฆ์šฉ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์ธ์ฆ ์ฒ˜๋ฆฌ ๋ฉ”์†Œ๋“œ์— @ModelAttribute ๋ฅผ ๋ถ™์—ฌ ๋งค ์š”์ฒญ ๋งˆ๋‹ค ์ธ์ฆ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ณ  ์žˆ์–ด ๋ถˆํ•„์š”ํ•œ ์ž์›์ด ๋‚ญ๋น„๋˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ด๋‹ค. ๋•Œ๋ฌธ์— Spring Security ์— ์ต์ˆ™์น˜๋„ ์•Š๊ณ , ์–ธ์  ๊ฐ€ ํšŒ์‚ฌ์˜ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„ ๋น„์‚ฌ์ด๋“œ ์‚ฌ์ด๋“œ ํ”„..

Programming/Spring 2023.04.08

[QueryDSL] NoSuchMethodError Trouble Shooting

๋“ค์–ด๊ฐ€๊ธฐ ์•ž์„œ ํ˜„์žฌ QueryDSL 5.0.0 ๋ฒ„์ „์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋ณต์žกํ•œ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋Š” ํ…Œ์ด๋ธ”์„ JPA Mapping ์„ ์‚ฌ์šฉํ•ด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•  ๊ฒฝ์šฐ ๋„ˆ๋ฌด ๋งŽ์€ ์ฟผ๋ฆฌ๋ฅผ ์š”์ฒญํ•˜๊ฒŒ ๋˜์–ด ๋ถˆํ•„์š”ํ•œ ์ž์›์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด @Query ์• ๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•ด ๋ ˆํผ์ง€ํ† ๋ฆฌ์— ์กฐํšŒ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ ค ํ–ˆ์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ๋ฐ˜๋ คํ–ˆ๋‹ค. ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ํ•œ ๋ฒˆ์— ์กฐํšŒํ•ด ํ•˜๋‚˜์˜ ๋„๋ฉ”์ธ ํด๋ž˜์Šค๋กœ ์žฌ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ ์กฐ๊ฑด์˜ ๊ฒฐ๊ณผ๋ฅผ GroupBy ํ•˜์—ฌ ์ž„๋ฒ ๋””๋“œ ํด๋ž˜์Šค์˜ ํ•„๋“œ์— ํ• ๋‹นํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ @Query ์• ๋…ธํ…Œ์ด์…˜์€ ๊ตฌํ˜„์ด ์–ด๋ ค์šธ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ํŠน์ • ์—”ํ‹ฐํ‹ฐ์˜ ๋ ˆํผ์ง€ํ† ๋ฆฌ์— @Query ๋ฅผ ์‚ฌ์šฉํ•ด ์กฐํšŒ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ํ•ด๋‹น ๋ ˆํผ์ง€ํ† ๋ฆฌ..

Programming/Spring 2023.02.22

Criteria API

Goal Criteria API CriteriaBuilder CriteriaQuery Criteria API Java Persistence Criteria API ๋Š” JPQL ์˜ ๋ฌธ์ž์—ด ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ด์šฉํ•˜๋Š” ๋Œ€์‹  ๊ฐ์ฒด ๊ธฐ๋ฐ˜ ์ฟผ๋ฆฌ ์ •์˜ ๊ฐœ์ฒด์˜ ๊ตฌ์„ฑ์„ ํ†ตํ•ด ๋™์  ์ฟผ๋ฆฌ๋ฅผ ์ •์˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. Critera API ์—๋Š” type-restricted mode, non-typed mode ๋กœ ๋‚˜๋‰˜๋ฉฐ, ๋Ÿฐํƒ€์ž„ ์‹œ ๋™์ ์œผ๋กœ ์กฐํšŒ ๋นŒ๋“œ๋ฅผ ์ง€์›ํ•ด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ๋˜ํ•œ Criteria API ๋Š” ๋™์  ์ฟผ๋ฆฌ์—๋งŒ ์‚ฌ์šฉ๋˜์–ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋˜๋Š” Named Query ์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๋™์  ์ฟผ๋ฆฌ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ๊ธฐ์กด์˜ ์ •์  Named Query ์— ๋น„ํ•ด ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜์ง€ ์•Š๋‹ค. ๊ทธ๋Ÿฌํ•œ ์ด์œ ๋กœ JPA ..

Programming/Spring 2023.01.28

Spring Bean / IoC Container / DI

Goal Spring Bean Spring IoC Container Dependency Injection (DI) Constructor Injection Method Injection Setter Injectio Spring Bean Spring Bean ์œผ๋กœ ๋“ฑ๋ก๋œ ํด๋ž˜์Šค๋Š” IoC Contrainer ์— ์˜ํ•ด ์ƒ์„ฑ๋œ Singleton ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, Bean ์œผ๋กœ ๋“ฑ๋ก๋œ ํด๋ž˜์Šค๋งŒ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ†ตํ•ด ์˜์กด์„ฑ์ด ์ฃผ์ž…(Dependency Injection)๋˜์–ด ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ด€๋ฆฌํ•˜๋„๋ก ํ•œ๋‹ค. Register Bean @Bean @Bean ์€ @Configuration ์ด ๋ถ™์€ DI ์„ค์ •์šฉ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ, ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด Bean Object ์˜ ์ƒ์„ฑ๊ณผ ์˜์กด ๊ด€๊ณ„..

Programming/Spring 2023.01.21

JPA / Persistence Context / Transactional

Goal JDBC Spring Data JPA Persistence Context JDBC? Spring JDBC ๋ž€ Spring Framework ์™€ DB ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฒค๋”์‚ฌ์˜ ์ œํ’ˆ์— ๊ด€๊ณ„์—†์ด DB ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค€๋‹ค. ํ•˜์ง€๋งŒ JDBC ๋Š” Persistence Layer ์™€ ๊ธด๋ฐ€ํ•œ ๊ด€๊ณ„๋ฅผ ๋งบ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ Connection ์„ค์ •ํ•˜๊ฑฐ๋‚˜ Statement ๋ฅผ ์ด์šฉํ•ด ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ›„ Statement ๋ฅผ ์ง์ ‘ ๋‹ซ์•„์ค˜์•ผ ํ•˜๋Š” ๋“ฑ์˜ ๋ฌธ์ œ์ ์ด ์•ผ๊ธฐ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ค‘๋ณต ์ฝ”๋“œ์˜ ์žฌ์ƒ์‚ฐ์œผ๋กœ ์ธํ•ด ์œ ์ง€๋ณด์ˆ˜์˜ ๋‚œ์ด๋„๊ฐ€ ์ƒ์Šนํ•˜๊ฒŒ ๋œ๋‹ค. Spring Data JPA ORM(Object Relation Mapper) ์ค‘ ํ•˜๋‚˜๋กœ, ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ Java ์˜ ๊ฐ..

Programming/Spring 2023.01.14

[Effective Java] ์™œ EnumSet ๊ณผ EnumMap ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€

๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ๋ฐฑ๊ธฐ์„ ๋‹˜์˜ [Effective Java] ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜๋Š” ์ค‘ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Enum ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ฑฐ๋‚˜ Enum ๊ฐ์ฒด๋ฅผ Key ๋กœ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ ์™œ EnumMap ์ด๋‚˜ EnumSet ์„ ์“ฐ๋Š” ๊ฒƒ์ด ๋‹ค๋ฅธ Map / Set ๊ตฌํ˜„์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํšจ์œจ์ ์ธ์ง€์— ๋Œ€ํ•ด ํ•™์Šตํ•˜๋Š” ๊ณผ์ œ๋ฅผ ๋ฐ›์•˜๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์ด๋“ค์ด ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๊ทธ์— ๋Œ€ํ•œ ์ฐจ์ด์  ๋ฐ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด์ ์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์™œ ์—ด๊ฑฐ ํƒ€์ž…์„ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ? Java 1.5 ๋ฒ„์ „ ์ด์ „์—๋Š” ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ƒ์ˆ˜๋ฅผ int ํƒ€์ž…์œผ๋กœ ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉํ–ˆ๋‹ค. ์ด๋ฅผ ์ •์ˆ˜ ์—ด๊ฑฐ ํŒจํ„ด์ด๋ผ๊ณ  ํ•œ๋‹ค. ๊ณผ๊ฑฐ์˜ ๋ฐฉ์‹์ฒ˜๋Ÿผ int ๋ฅผ ์ด์šฉํ•ด ์ƒ์ˆ˜๋ฅผ ์—ด๊ฑฐํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ๋‹ค. 1. ์ปดํŒŒ์ผ ํƒ€์ž„์—์„œ ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค. 2. Name..

Programming/Java 2022.11.20

F019 - Socket

โœ๏ธ ์ด์ „ ์‹œ๊ฐ„์— IO์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋ฉด์„œ ํŒŒ์ผ์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ๊ณผ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ๊ณผ๋Š” ์ „ํ˜€ ๊ด€๋ จ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ํ•˜๋‚˜ ๋‘˜ ์”ฉ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋‹ˆ ํ•˜๋‚˜์˜ ๋ฟŒ๋ฆฌ์—์„œ ์‹œ์ž‘๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๊ทธ ์—ฐ์žฅ์œผ๋กœ Socket ํ†ต์‹ ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. Socket Socket(์ดํ•˜ ์†Œ์ผ“)์€ ๋ฌด์—‡์ผ๊นŒ? ์ผ์ƒ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ฝ˜์„ผํŠธ ์†Œ์ผ“์ผ ์ˆ˜๋„ ์žˆ๊ณ , ์ „๊ตฌ๋ฅผ ๋ผ์šฐ๋Š” ์†Œ์ผ“์ผ ์ˆ˜๋„ ์žˆ๊ณ , ์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ ๊ณต๋ถ€ํ•˜๋ ค๊ณ  ํ•˜๋Š” ์†Œ์ผ“์ด๋ผ๋Š” ํ”„๋กœํ† ์ฝœ์ผ ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋“ค์˜ ๊ณตํ†ต์ ์€ A์™€ B๋ฅผ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์กด์žฌ๋ผ๋Š” ๊ฒƒ์ด๋‹ค. A socket is an endpoint for communication between two machines. ์†Œ์ผ“์€ ๋‘ ๊ธฐ๊ธฐ ๊ฐ„์˜ ํ†ต์‹ ์„ ์œ„ํ•œ ์—”๋“œํฌ์ธํŠธ์ด๋‹ค. - Java 8 Referenc..

Programming/Java 2021.06.22

F018 - Serializable (์ง๋ ฌํ™”, ์—ญ์ง๋ ฌํ™”)

โœ๏ธ ์—…๋ฌด๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ Domain ํด๋ž˜์Šค์— Serializable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ดค๋˜ ๊ฒฝํ—˜์ด ์žˆ๋Š”๋ฐ, ๋‹น์‹œ์—๋Š” ์™œ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š”์ง€ ์ฐพ์•„๋ณด์ง€ ์•Š๊ณ  ๊ฐœ๋ฐœํ–ˆ์—ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Serializable ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๊ณต๋ถ€ํ•ด๋ณด์ž Serializable public class SerializableTest implements Serializable { ... } ์‚ฌ์ „์  ์˜๋ฏธ๋กœ๋Š” ์ง๋ ฌํ™”๋ผ๋Š” ๋œป์„ ๊ฐ€์ง„๋‹ค. ์ง๋ ฌํ™”๋Š” ๋ฌด์—‡์ผ๊นŒ? ๋ชจ๋ž˜์‹œ๊ณ„ ์•ˆ์— ์žˆ๋Š” ๋ชจ๋ž˜๋ญ‰์น˜๊ฐ€ ์ข์€ ํ†ต๋กœ๋ฅผ ํ†ต๊ณผ ํ•  ๋•Œ ๊ฐ๊ฐ์˜ ์•Œ๊ฐฑ์ด๋กœ ๋‚˜๋‰˜์–ด์ ธ ์ง€๋‚˜๊ฐ€๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” Serializable ๊ณผ ๋น„์Šทํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋œ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์™ธ๋ถ€์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ Stream ์ด์šฉํ•˜์—ฌ ํ†ต์‹ ํ•˜๋Š”๋ฐ, ์ด ๋•Œ Str..

Programming/Java 2021.06.16

F017 - Blocking, Non-Blocking / Synchronous, Asynchronous

โœ๏ธ ์˜ˆ์ „์— Node.js๋ฅผ ์ž ๊น ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๊ธฐ์ดˆ ์ง€์‹์„ ์Œ“๋Š”๋‹ค๊ณ  ํ•ด๋‹น ๊ฐœ๋…์„ ์Šค์ณ ์ง€๋‚˜๊ฐ€ ๋“ฏ ์ฐพ์•„ ๋ดค๋˜ ๊ธฐ์–ต์ด ์žˆ๋‹ค. ๋ธ”๋กœ๊ทธ์— ์ •๋ฆฌ๋„ ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ, ๋‹น์‹œ์—๋Š” Thread์™€ Process ๊ทธ๋ฆฌ๊ณ  ์ด๋กœ ์ธํ•ด ์šด์˜์ฒด์ œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์กฐ๊ธˆ๋„ ์•Œ์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „ํ˜€ ์ดํ•ด๊ฐ€ ์•ˆ๋œ ์ƒํƒœ๋กœ ๊ธ€๋งŒ ์ •๋ฆฌํ–ˆ์—ˆ๋‹ค. (๋ณต๋ถ™ ์ˆ˜์ค€) ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๊ทธ๋ž˜๋„ ์œ„์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ๋ฏธ์•ฝํ•˜๊ฒŒ๋‚˜๋งˆ ์ •๋ฆฌ๊ฐ€ ๋˜์—ˆ์œผ๋‹ˆ ์ด๋ฅผ ๋ฐœํŒ์œผ๋กœ ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ, Blocking๊ณผ Non-Blocking์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด์ž! Blocking / Non-Blocking Blocking : ์–ด๋– ํ•œ ํ–‰์œ„์— ์˜ํ•ด ์ž์‹ ์˜ ํ–‰์œ„๋ฅผ ์ด์–ด์„œ ์ˆ˜ํ–‰ํ•˜์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜ ๋ง‰ํžˆ๋Š” ๊ฒƒ. Non-Blocking : ์–ด๋– ํ•œ ํ–‰์œ„์— ๊ตฌ์•  ๋ฐ›์ง€ ์•Š๊ณ  ์ž์‹ ์˜ ํ–‰์œ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ. Sync /..

Programming/Java 2021.06.15

F016 - File, I/O, Stream

โœ๏ธ ์‹ค๋ฌด์—์„œ ์—‘์…€์ด๋‚˜ CSV ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ์—…๋กœ๋“œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ๋˜ ๊ฒฝํ—˜์ด ์žˆ๋Š”๋ฐ, ์—‘์…€์˜ ๊ฒฝ์šฐ Apache ์žฌ๋‹จ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ–ˆ๊ณ , CSV์˜ ๊ฒฝ์šฐ ByteArrayInputStream ์œผ๋กœ ๊ตฌํ˜„ํ–ˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹น์‹œ์—๋Š” ๊ทธ๋ƒฅ ์ด ํด๋ž˜์Šค๋ฅผ ์“ฐ๋ฉด ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ/์—…๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ๋งŒ ์•Œ๊ณ  ์–ด๋–ป๊ฒŒ ๋‹ค์šด๋กœ๋“œ/์—…๋กœ๋“œ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์ง€ ๋ชปํ–ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์„ ํ†ตํ•ด I/O, File, I/O Stream ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด์ž! File java.io ํŒจํ‚ค์ง€์— ์†ํ•˜๋Š” ํด๋ž˜์Šค๋กœ ํŒŒ์ผ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๊นŒ์ง€ ํฌํ•จํ•˜๋Š” ํฌ๊ด„์ ์ธ ํด๋ž˜์Šค์ด๋‹ค. ๋•Œ๋ฌธ์— ๋ชฉ์ ์˜ ๋ชจํ˜ธ์„ฑ ๋•Œ๋ฌธ์— Java 7 ๋ถ€ํ„ฐ NIO2 ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ณตํ•˜๋ฉด์„œ Files ํด๋ž˜์Šค๊ฐ€ ์ถ”๊ฐ€๋˜๋Š”๋ฐ, ์ด๋Š” File ํด๋ž˜์Šค ๋Œ€๋ถ€๋ถ„์˜ ๋ฉ”์†Œ..

Programming/Java 2021.06.14