์คํ๋ง(21)
-
Spring Batch ๊ฐ๋ ๋ฐ ์ฃผ์ ๊ตฌ์ฑ์์, ๊ฐ๋จํ ์์ ๊ตฌํ
๐ ๋ชฉ์ฐจ Spring Batch - ๊ธฐ๋ณธ ๊ฐ๋ & ํน์ง, ์ฃผ์ ๊ตฌ์ฑ ์์, ๋ฉํ๋ฐ์ดํฐ ํ ์ด๋ธ Spring Scheduler - ๊ธฐ๋ณธ ๊ฐ๋ , ์ฌ์ฉ ๋ฐฉ๋ฒ ๊ฐ๋จํ ์์ ๊ตฌํ - CSV ํ์ผ ์ฝ์ด์ DB์ ์ ์ฅํด๋ณด๊ธฐ Spring BatchSpring Batch ์คํ๋ง ๋ฐฐ์น : ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ ์ ์๋ฐ ๊ธฐ๋ฐ์ ๋ฐฐ์น ์ฒ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํ ํ๋ ์์ํฌ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ผ๊ด์ ์ผ๋ก ์ฒ๋ฆฌํ๊ฑฐ๋ ๋ฐ๋ณต์ ์ธ ์์ ์ ์๋ํํ๋ ๋ฐ ์ฌ์ฉ๋จ Spring Batch ํน์ง๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋๋ก ์ค๊ณ๋๋์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด chunk (์ฒญํฌ) ๊ธฐ๋ฐ ์ฒ๋ฆฌ์ paging (ํ์ด์ง) ๋ฑ์ ๊ธฐ์ ์ ๊ณต๋ถ์ฐ ์ฒ๋ฆฌ ๋ฐ ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ง์ํด ํ์ฅ์ฑ๊ณผ ์ฑ๋ฅ ๊ทน๋ํ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ์ผ, API ๋ฑ์ ๋ฐ..
2025.02.18 -
[Spring Boot] Spring Security, JWT ํ ํฐ ์ธ์ฆ
์กฐ๊ธ์ ์๊ฐ์ด ๋จ์ ํญ์ ๋ฏธ๋ค์๋์คํ๋ง ๋ถํธ์์ JWT ํ ํฐ์ ์ฌ์ฉํด ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ , Spring Security๋ก ์ธ์ฆ์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ํ ์คํธ ํ๋ก์ ํธ ๋ง๋ค์ด๋ณด๊ณ , ํฐ์คํ ๋ฆฌ์ ์ ๋ฆฌํด๋ณธ๋ค.!! ์ด๋ฒ์ REST API ํ๋ก์ ํธ์ ์ธ์ฆ๋ฐฉ์์ผ๋ก JWT ํ ํฐ์ ์ฌ์ฉํ๊ณ , ์ด ๋ถ๋ถ์ ๋ด๊ฐ ์ ๋๋ก ์๊ณ ์๊ฒ ๋ ์ํฉ์ด ๋์ด์,,, ๋ฏธ๋ฆฌ ๋ฏธ๋ฆฌ ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌ ํด๋๋ค ใ ใ ๐๐ 0๏ธโฃ Spring Security, JWT ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ build.gardle implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'io.jsonwebtoken:jjwt-impl:0.11.5' implementati..
2024.11.04 -
cause: java.lang.numberformatexception: for input string: ์๋ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ
์ด๋๋ ๊ฐ๋ฐํ๋ค๊ฐ Mybatis์์ ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํด์ ๊ฐ๋ฐํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ด์ ์์ฑ ํ ์คํํ๋๋ฐ cause: java.lang.numberformatexception: for input string: "A" ์ด๋ฐ์์ผ๋ก ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ์ฒ์์๋ NumberFormatExcepton ์ด๋ผ๊ธธ๋ ๋ด๊ฐ ๋ฌธ์์ด์ ์ซ์ํ์ผ๋ก ๋ณํํ๋?? ์ถ์ด์ ์ฅ???ํ๋ฉด์ ์ฝ๋๋ฅผ ๋ดค๋๋ฐ ์ญ์ ๊ทธ๋ฌ์ง ์์๋ค. ๋ฐ๋ผ์ ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์ด์ ์ฐพ์๋ณด๋๊น ํฐ ๋ฐ์ดํ ์์ ์์ ๋ฐ์ดํ๋ฅผ ์ฌ์ฉํ๋๊ฒ ์๋๋ผ... ์์ ๋ฐ์ดํ์์ ํฐ ๋ฐ์ดํ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค๊ณ ํ๋ค.. ์ค์ ๋ก ์ด๋ ๊ฒ ํด์ ์คํํ๋๊น ๋๋ค..!!! (์ด์ํ๊ฒ ๋ค๋ฅธ๋ฐ๋ " " ์์ ' '์ ์ฌ์ฉํด๋ ๋๋๋ฐ.. ๋ญ์ง... )
2023.07.03 -
์คํ๋ง & ํ๋ก๋ฉํ ์ฐ์ค & ๊ทธ๋ผํ๋ (๊ทธ๋ผํ๋ ์ค์น, ์ฐ๋, ์ฌ์ฉ ๋ฐฉ๋ฒ)
์คํ๋ง & ํ๋ก๋ฉํ ์ฐ์ค (์ค์น, ์ค์ , ๊ธฐ๋ณธ ๊ธฐ๋ฅ) (tistory.com) ์คํ๋ง & ํ๋ก๋ฉํ ์ฐ์ค (์ค์น, ์ค์ , ๊ธฐ๋ณธ ๊ธฐ๋ฅ) ์คํ๋ง ๋ชจ๋ํฐ๋ง (์ก์ธ์์ดํฐ, ๋ง์ดํฌ๋ก๋ฏธํฐ, ๋ฉํธ๋ฆญ, ํ๋ก๋ฉํ ์ฐ์ค, ๊ทธ๋ผํ๋) (tistory.com) ์คํ๋ง ๋ชจ๋ํฐ๋ง (์ก์ธ์์ดํฐ, ๋ง์ดํฌ๋ก๋ฏธํฐ, ๋ฉํธ๋ฆญ, ํ๋ก๋ฉํ ์ฐ์ค, ๊ทธ๋ผํ๋) ์คํ๋ง Actuator Endpoint (h hyejin.tistory.com ์ ๋ฒ ๊ธ์์ ํ๋ก๋ฉํ ์ฐ์ค๋ฅผ ์ค์นํ๊ณ ์คํ๋ง๊ณผ ์ฐ๋ํด์ ๋ฉํธ๋ฆญ์ ์์งํ๊ณ ๋ณด๊ดํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ดค๋ค. ํ๋ก๋ฉํ ์ฐ์ค๋ ๋ฉํธ๋ฆญ์ ์์งํ๊ณ ๋ณด๊ดํ๋ DB๋ก ํ๋ก๋ฉํ ์ฐ์ค๋ฅผ ์คํ๋ง๊ณผ ์ฐ๋ํ๊ธฐ ์ํด์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ค์ ์ ํตํด ํ๋ก๋ฉํ ์ฐ์ค ํฌ๋งท์ ๋ง๊ฒ ๋ฉํธ๋ฆญ์ ๋ง๋ค๊ณ , ํ๋ก๋ฉํ ์ฐ์ค๊ฐ ์ด ๋ฉํธ๋ฆญ์ ์ฃผ๊ธฐ์ ์ผ๋ก ์์งํ๋๋ก ์ค์ ํด์ฃผ๋ฉด ..
2023.05.19 -
์คํ๋ง & ํ๋ก๋ฉํ ์ฐ์ค (์ค์น, ์ค์ , ๊ธฐ๋ณธ ๊ธฐ๋ฅ)
์คํ๋ง ๋ชจ๋ํฐ๋ง (์ก์ธ์์ดํฐ, ๋ง์ดํฌ๋ก๋ฏธํฐ, ๋ฉํธ๋ฆญ, ํ๋ก๋ฉํ ์ฐ์ค, ๊ทธ๋ผํ๋) (tistory.com) ์คํ๋ง ๋ชจ๋ํฐ๋ง (์ก์ธ์์ดํฐ, ๋ง์ดํฌ๋ก๋ฏธํฐ, ๋ฉํธ๋ฆญ, ํ๋ก๋ฉํ ์ฐ์ค, ๊ทธ๋ผํ๋) ์คํ๋ง Actuator Endpoint (health, info, logger, httpexchanges) (tistory.com) ์คํ๋ง Actuator Endpoint (health, info, logger, httpexchanges) ์คํ๋ง๋ถํธ Actuator (tistory.com) ์คํ๋ง๋ถํธ Actuator 1๏ธโฃ Spring Actuator ์ค๋ฌด์์๋ ๊ฐ๋ฐ hyejin.tistory.com ์ ๋ฒ ๊ธ์์ ์คํ๋ง ๋ถํธ์์ ๋ชจ๋ํฐ๋งํ ๋ ์ง์ํ๋ ํด์ธ ํ๋ก๋ฉํ ์ฐ์ค์ ๊ทธ๋ผํ๋์ ๋ํ ๊ฐ๋ ? ์ ๋ ์์๋ดค๋ค. ์ด๋ฒ ๊ธ์์๋ ..
2023.05.18 -
์คํ๋ง๋ถํธ Actuator
1๏ธโฃ Spring Actuator ์ค๋ฌด์์๋ ๊ฐ๋ฐ์ ํ๋ค ํ๋ฉด ์๊ตฌ์ฌํญ๋๋ก ๊ฐ๋ฐ์ ํ๋ ๊ฒ์ ๋์ด์ ๋ง๋ ์๋น์ค์ ๋ฌธ์ ๊ฐ ์๋์ง ์๋์ง ๋ชจ๋ํฐ๋งํ๊ณ ์งํ๋ค์ ์ฌ์ด์ ๊ฐ์ํ๋ ํ๋์ด ํ์ํ๋ค. ์ด๋ฐ ํ๋์ ํ๋ก๋์ ์ค๋น ๊ธฐ๋ฅ์ด๋ผ๊ณ ํ๋๋ฐ ํ๋ก๋์ ์ ์ด์์ ๋ฐฐํฌํ ๋ ์ค๋นํด์ผํ๋ ๋น ๊ธฐ๋ฅ์ ์ธ ์์๋ค์ ๋ปํ๋ค. - ์งํ metric, ์ถ์ trace, ๊ฐ์ฌ auditing - ๋ชจ๋ํฐ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ์ฌ ์ด์์๋์ง, ๋ก๊ทธ ์ ๋ณด๋ ์ ์์ ์ผ๋ก ์ค์ ๋์ด ์๋์ง, ์ปค๋ฅ์ ํ์ ์ผ๋ง๋ ์ฌ์ฉ๋๊ณ ์๋ ์ง ๋ฑ์ ํ์ธํ ์ ์์ด์ผ ํ๋๋ฐ ์คํ๋ง ๋ถํธ๋ actuator๋ผ๋ ๊ฑธ ์ ๊ณตํด ํ๋ก๋์ ์ค๋น ๊ธฐ๋ฅ์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ค๋ค. Spring Actuator๋ ์ด์์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ HTTP๋ JMX ๋ฅผ ์ด์ฉํด์..
2023.05.15 -
์คํ๋ง YAML, @Profile
0๏ธโฃ YAML ์ด๋? ์คํ๋ง์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ๋ application.properties ๋ง๊ณ ๋ appliction.yml YAML ํ์ผ ํ์์ ์ง์ํ๋ค. ์ด๋ YAML ์ด๋ YAML Ain't Markup Language ์ ์ฝ์๋ก ํ์ฅ์๋ yaml, yml๋ก ์ฃผ๋ก yml ์ ์ฌ์ฉํ๋ค. application.properties my.datasource.url=local.db.com my.datasource.username=username my.datasource.password=password my.datasource.etc.max-connection=1 my.datasource.etc.timeout=3500ms my.datasource.etc.options=CACHE,ADMIN applica..
2023.05.11 -
์คํ๋ง ์ธ๋ถ ์ค์ ์ฌ์ฉ ๋ฐฉ๋ฒ (Environment)
์คํ๋ง ์ธ๋ถ ์ค์ ๋ฐฉ๋ฒ (์ปค๋งจ๋ ๋ผ์ธ ์ธ์, ์ปค๋งจ๋ ๋ผ์ธ ์ต์ ์ธ์, ์คํ๋ง ํตํฉ) (tistory.com) ์คํ๋ง ์ธ๋ถ ์ค์ ๋ฐฉ๋ฒ (์ปค๋งจ๋ ๋ผ์ธ ์ธ์, ์ปค๋งจ๋ ๋ผ์ธ ์ต์ ์ธ์, ์คํ๋ง ํตํฉ) ์คํ๋ง ์ธ๋ถ ์ค์ ๋ฐฉ๋ฒ (OS ํ๊ฒฝ ๋ณ์, ์๋ฐ ์์คํ ์์ฑ) (tistory.com) ์คํ๋ง ์ธ๋ถ ์ค์ ๋ฐฉ๋ฒ (OS ํ๊ฒฝ ๋ณ์, ์๋ฐ ์์คํ ์์ฑ) 0๏ธโฃ ์ธ๋ถ ์ค์ ์ด๋ ? ๋ณดํต ์ค๋ฌด์์ ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด ๋๋ถ๋ถ ํ์ฌ์ hyejin.tistory.com ์คํ๋ง ์ธ๋ถ ์ค์ ๋ฐฉ๋ฒ (์ธ๋ถ ๋ฐ์ดํฐ) (tistory.com) ์คํ๋ง ์ธ๋ถ ์ค์ ๋ฐฉ๋ฒ (์ธ๋ถ ๋ฐ์ดํฐ) ์คํ๋ง ์ธ๋ถ ์ค์ ๋ฐฉ๋ฒ (OS ํ๊ฒฝ ๋ณ์, ์๋ฐ ์์คํ ์์ฑ) (tistory.com) ์คํ๋ง ์ธ๋ถ ์ค์ ๋ฐฉ๋ฒ (OS ํ๊ฒฝ ๋ณ์, ์๋ฐ ์์คํ ์์ฑ) 0๏ธโฃ ์ธ๋ถ..
2023.05.11 -
์คํ๋ง ์ปจํธ๋กค๋ฌ ํ๋ผ๋ฏธํฐ์ ํ๊ธ ๊นจ์ง ํ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
๊ฐ๋ฐํ๋๋ฐ ์คํ๋ง ์ปจํธ๋กค๋ฌ์ ํ๊ธ๊นจ์ง์ด ๋ฐ์ํด์ ์ ๋๋ก ๊ฐ์ด ์๋ค์ด์ค๋ ์ํฉ์ด ๋ฐ์ํ์๋ค. ์ํฉ์ url์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ๋๋ฐ ์ด๋ ํ๊ธ์ด ๋ค์ด๊ฐ url์ ๋ํด์ ํ๊ธ๊นจ์ง ํ์์ด ๋ฐ์ํ์๋ค. ์ธํ ๋ฆฌ์ ์ด ํ๊ธ ์ค์ ์ด ์๋ชป๋๋ ํ๊ณ ๊ตฌ๊ธ๋งํ๋ฉด ๋์ค๋ ๊ฐ์ข ์ค์ ์ ๋ค ํด๋ดค์ง๋ง ์๋์๋ค..ใ ใ ์ด ๋ฐฉ๋ฒ์ด ์๋ ๊ฒ ๊ฐ์์ ์๋ฒ์์ ๋ฌธ์ ์ธ๊ฐ ํ๊ณ tomcat์ server.xml ๋ณด๋๊น ์๋ฒ์ ์ธ์ฝ๋ฉ ์ค์ ์ ์ํด์ค์ ๋ฐ์ํ๋ ๊ฒ์ด๋ค...๐ tomcat ์ค์นํ ๊ณณ์ conf > server.xml ์๋๋ URIEncoding="UTF-8" ์ด ์์ ๊ฒ์ธ๋ฐ ์ด๊ฑธ ์ถ๊ฐํด์ฃผ๋ฉด ์๋ฒ ์ธ์ฝ๋ฉ ์ฒ๋ฆฌ๊ฐ ๋๋ค.
2023.05.09 -
์คํ๋ง ์ธ๋ถ ์ค์ ๋ฐฉ๋ฒ (OS ํ๊ฒฝ ๋ณ์, ์๋ฐ ์์คํ ์์ฑ)
0๏ธโฃ ์ธ๋ถ ์ค์ ์ด๋ ? ๋ณดํต ์ค๋ฌด์์ ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด ๋๋ถ๋ถ ํ์ฌ์์ ์ด์ ์๋ฒ์ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ๋๋ ์ ๊ฐ๋ฐ์ ์งํํ๋ค. ๋จผ์ ๊ฐ๋ฐ ์๋ฒ์์ ๊ฐ๋ฐํ๊ณ , ํ ์คํธ๋ฅผ ์งํ ํ ์ ์์ ์ผ๋ก ๋์ํ๋ค๋ ๊ฒ์ ํ์ธํ ํ์ ์ค์ ๊ณ ๊ฐ์๊ฒ ์๋น์ค ํ๋ ์ด์ ํ๊ฒฝ์ ๋ฐฐํฌ๋ฅผ ํ๋ ๋ฐฉ์์ผ๋ก ์งํํ๋ค. ๊ฐ๋ฐ ํ๊ฒฝ : ๊ฐ๋ฐ ์๋ฒ, ๊ฐ๋ฐ DB ์ด์ ํ๊ฒฝ: ์ด์ ์๋ฒ, ์ด์ DB ์ด๋ฐ์์ผ๋ก DB๋ ๋ค๋ฅธ ๊ฐ๊ฐ ๋ค๋ฅธ ๊ฒ์ ์ฌ์ฉํด์ ์งํํด์ฃผ๋๋ฐ ๊ทธ๋ฌ๋ฉด ๊ฐ๊ฐ ํ๊ฒฝ์ ๋ฐ๋ผ์ DB URL , username ๋ฑ๋ฑ์ ์ค์ ์ด ์กฐ๊ธ์ฉ ๋ค๋ฅด๊ฒ ๋๋ค. ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ค์ ๊ฐ์ ์ฌ์ฉํ๊ธฐ ์ํด์ ๋น๋ ํ ๊ฐ ํ๊ฒฝ์ ๋ง์ถฐ ์คํ ์์ ์ ์ธ๋ถ ์ค์ ๊ฐ์ ์ฃผ์ ํด์ฃผ๋ฉด ๋๋ค. ๋ฐฐํฌ ํ๊ฒฝ๊ณผ๋ ์๊ด์์ด ๋น๋๋ ํ๋ฒ๋ง ์งํํ๊ณ , ๊ทธ ๋ค์ ์คํ ์์ ์ ํ๊ฒฝ์ ๋ฐ๋ผ ์ค์ ๊ฐ..
2023.05.04 -
์๋ ๊ตฌ์ฑ ์ฌ์ฉ ์ ์คํ๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ง๋ค๊ณ ์ฌ์ฉํด๋ณด๊ธฐ
์คํ๋ง @Conditional (tistory.com) ์คํ๋ง @Conditional 0๏ธโฃ ์์ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ ์คํ๋ง ๋ถํธ๊ฐ ์ ๊ณตํ๋ ์๋ ๊ตฌ์ฑ์ ๋ํด์ ์์๋ณด๊ธฐ ์ ์ ๊ฐ๋จํ ์์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ๊ฒ์ธ๋ฐ ์ด ์์ ํ๋ก์ ํธ๋ ์ค์๊ฐ์ผ๋ก ์๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์น์ผ๋ก ํ hyejin.tistory.com ์ ๋ฒ ๊ธ์์ ๋ง๋ ์ค์๊ฐ memory ์กฐํ ํ๋ ํ๋ก์ ํธ๋ฅผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ง๋ค์ด์ ๋ค๋ฅธ ํ๋ก์ ํธ๋ค์์๋ ์ฌ์ฉํ๊ณ ์ถ์ ๋ ๋จผ์ ์คํ๋ง ๋ถํธ๊ฐ ์ ๊ณตํ๋ ์๋ ๊ตฌ์ฑ AutoConfiguration์ ์ฌ์ฉํ์ง ์๊ณ ์์ํ๊ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค์ด ๋ณผ ๊ฒ์ด๋ค. ๐ ์ฐธ๊ณ ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค ๋๋ ์คํ๋ง ๋ถํธ ํ๋ฌ๊ทธ์ธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์๋๋ค. (๋ค๋ฅธ ํ๋ก์ ํธ์์ ํฌํจ๋์ด ์ฌ์ฉ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ง์ ์คํ๋ ์ผ์ด ์์) 0..
2023.04.28 -
์คํ๋ง ๋ถํธ Auto Configuration
0๏ธโฃ ์์ ํ๋ก์ ํธ ์์ฑ dependencies { implementation 'org.springframework.boot:spring-boot-starter-jdbc' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' //ํ ์คํธ์์ lombok ์ฌ์ฉ testCompileOnly 'org.project..
2023.04.25