๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€

(135)
[spring boot] HttpMessageConverters HttpMessageConverters HTTP ์š”์ฒญ ๋ณธ๋ฌธ์„ ๊ฐ์ฒด๋กœ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜, ๊ฐ์ฒด๋ฅผ HTTP ์‘๋‹ต ๋ณธ๋ฌธ์œผ๋กœ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๊ณ , ์Šคํ”„๋ง mvc์˜ ์ผ๋ถ€๋ถ„์ด๋‹ค. ์˜ˆ์‹œ) ์ปจํ…์ธ ํƒ€์ž…์ด json์ธ ์š”์ฒญ์ด ๋“ค์–ด์™”๋‹ค๋ฉด json message converter๊ฐ€ User๋ผ๋Š” ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค. {“username”:”keesun”, “password”:”123”} User ๋ฆฌํ„ด ํƒ€์ž…์ด String์ด๋ฉด String message converter๊ฐ€ ์‚ฌ์šฉ์ด ๋œ๋‹ค. @ReuqestBody ์™€ @ResponseBody๋ฅผ ํ†ตํ•ด ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. @Controller public class UserController2 { @GetMapping("/hello") public @Re..
[spring boot] Test ์˜์กด์„ฑ์„ ํ™•์ธํ•˜์ž spring-boot-starter-test๊ฐ€ test ๊ธฐ๋Šฅ์„ ํ•ด์ค€๋‹ค. scope์€ test๋กœ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค. org.springframework.boot spring-boot-starter-test test test ๋งŒ๋“ค๊ธฐ ๋‹จ์ถ•ํ‚ค: Alt+Insert @SpringBootTest @SpringBootTest๋Š” Spring main application, ์ฆ‰ @SpringBootApplication์„ ์ฐพ์•„๊ฐ€์„œ ์ดํ•˜์˜ ๋ชจ๋“  ๋นˆ์„ ์Šค์บ”ํ•˜๊ณ  test์šฉ application์— ๋“ฑ๋กํ•œ๋‹ค. ์–ด๋งˆ์–ด๋งˆํ•œ ํ†ตํ•ฉํ…Œ์ŠคํŠธ์ธ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ‘์— ๋‚˜์˜ค์ง€๋งŒ, MockBean๋งŒ ๊ต์ฒดํ•ด์ค€๋‹ค. ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ…Œ์ŠคํŠธ ํ˜•ํƒœ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. import org.junit.runner.RunWith; import org.s..
[spring boot] ๋กœ๊ฑฐ๋ฅผ Log4j2๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html#howto-configure-log4j-for-logging “How-to” Guides Spring Boot has no mandatory logging dependency, except for the Commons Logging API, which is typically provided by Spring Framework’s spring-jcl module. To use Logback, you need to include it and spring-jcl on the classpath. The recommended way to do th docs.spring.io org...
[spring boot] logging ์ปค์Šคํ„ฐ๋งˆ์ด์ง• https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html “How-to” Guides Spring Boot has no mandatory logging dependency, except for the Commons Logging API, which is typically provided by Spring Framework’s spring-jcl module. To use Logback, you need to include it and spring-jcl on the classpath. The recommended way to do th docs.spring.io Customize log file Logback: ํŒŒ์ผ..
[spring boot] logging ๊ธฐ๋ณธ ์„ค์ • log: (ํƒ€๋™์‚ฌ) ์ผ์ง€์— ๊ธฐ๋กํ•˜๋‹ค (๋งˆ์ง€๋ง‰ ํ™”์‚ดํ‘œ) JUL(java util logging)์€ SLF4j API๋กœ ๋ณด๋‚ธ๋‹ค. (์ค‘๊ฐ„ ํ™”์‚ดํ‘œ) Log4J๋„ SLF4j API๋กœ ๋ณด๋‚ธ๋‹ค. (์ฒ˜์Œ ํ™”์‚ดํ‘œ) Logback์ด SLF4j์˜ ๊ตฌํ˜„์ฒด์ด๋‹ค. Commons Logging, SLF4j๋Š” ์‹ค์ œ ๋กœ๊น…์„ ํ•˜๋Š” ์• ๋“ค์ด ์•„๋‹ˆ๋ผ ๋กœ๊ฑฐ API๋ฅผ ์ถ”์ƒํ™”ํ•ด๋‘” interface ์ด๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Commons Logging์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๊ฒฐ๊ตญ SLF4j์„ ์‚ฌ์šฉํ•˜๊ณ , SLF4j๋Š” ๊ตฌํ˜„์ฒด์ธ Logback์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊น…(๊ธฐ๋ก)์„ ํ•œ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ Logback์„ ์“ด๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ ๋กœ๊น…์˜ ๊ธฐ๋ณธ ํฌ๋งท ๋‚ ์งœ ์‹œ๊ฐ„ / ๋กœ๊ทธ ๋ ˆ๋ฒจ / PID / Thread ์ด๋ฆ„ / full package๊ฒฝ๋กœ.class์ด๋ฆ„ / ๋ฉ”์„ธ์ง€ ๋””๋ฒ„๊น… ..
@Profile Spring Framework์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ํŠน์ •ํ•œ ํ”„๋กœ ํŒŒ์ผ์—์„œ๋งŒ ํŠน์ •ํ•œ ๋นˆ์„ ๋“ฑ๋กํ•˜๊ณ  ์‹ถ๋‹ค๊ฑฐ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋™์ž‘์„ ํŠน์ •ํ•œ ํ”„๋กœํŒŒ์ผ์—์„œ ๋นˆ ์„ค์ •์„ ๋‹ค๋ฅด๊ฒŒ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์“ด๋‹ค. @Profile @Profile("prod") // ์„ค์ •ํŒŒ์ผ ์ž์ฒด๊ฐ€ "prod"๋ผ๋Š” ํ”„๋กœํŒŒ์ผ์ผ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๋‹น์—ฐํžˆ hello ๋นˆ๋„ ๋ชป์“ด๋‹ค. @Configuration public class BaseConfiguration { @Bean public String hello(){ return "hello"; } } @Profile("test") // ์„ค์ •ํŒŒ์ผ ์ž์ฒด๊ฐ€ "test"๋ผ๋Š” ํ”„๋กœํŒŒ์ผ์ผ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. @Configuration public class TestConfiguration { @Bean publi..
[spring boot] ์™ธ๋ถ€ ์„ค์ • https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config ์™ธ๋ถ€ ์„ค์ •์ด๋ž€? ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์—ฌ๋Ÿฌ ์„ค์ • ๊ฐ’๋“ค์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•ˆ ๋˜๋Š” ๋ฐ–์—๋‹ค๊ฐ€ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ application.properties ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์„ค์ • ํŒŒ์ผ์€ application.properties ํŒŒ์ผ์ด๋‹ค. spring boot๊ฐ€ ์ž๋™์œผ๋กœ ๋กœ๋”ฉํ•˜๋Š” ํŒŒ์ผ ์ด๋ฆ„์œผ๋กœ, ๊ทœ์•ฝ(convention)์ด๋‹ค. key value ํ˜•ํƒœ๋กœ ์ •์˜ํ•œ๋‹ค. ๋‹ค ๋ฌธ์ž์—ด์ด๋‹ค. springboot intializr ์‹œ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ํŒŒ์ผ๋กœ, ๋ฐ‘์˜ ์šฐ์„ ์ˆœ์œ„์—์„œ 15์ˆœ์œ„์— ํ•ด๋‹นํ•œ๋‹ค. Spring Boot์˜ ์™ธ๋ถ€ ์„ค์ • ์ข…๋ฅ˜ propertie..
JPA ํ”„๋กœ์ ํŠธ Spring Quick Start(์ฑ…)์˜ Day5 class04~05 ์‹ค์Šต์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๊ธฐ๋กํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์‹ค์Šตํ•œ ์ฝ”๋“œ์˜ ๋งํฌ์ž…๋‹ˆ๋‹ค. JPA๋ž€? ORM ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์— ๋Œ€ํ•œ ํ‘œ์ค€ํ™” ์ž‘์—…์˜ ๊ฒฐ๊ณผ๊ฐ€ JPA์ด๋‹ค. JPA(Java Persistence API)๋Š” ๋ชจ๋“  ORM ๊ตฌํ˜„์ฒด(ORM ํ”„๋ ˆ์ž„์›Œํฌ)๋“ค์˜ ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. JDBC๋Š” Oracle, Mysql, H2 ๋“ฑ ํŠน์ • DBMS์— ์ข…์†๋˜์ง€ ์•Š๋Š” DB ์—ฐ๋™ ๊ตฌํ˜„์„ ์ง€์›ํ•œ๋‹ค. ์ด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ JPA API(javax.persistence)๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ ๋‹น์‹œ์—๋Š” Hibernate๋ฅผ ORM ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ์‹ค์ œ ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋  ๋•Œ๋Š” TopLink๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ===== JPA ํ”„๋กœ์ ํŠธ ์ž‘์„ฑ๋ฐฉ๋ฒ• ===== 1. maven ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ 2...
Mybatis ํ”„๋กœ์ ํŠธ Spring Quick Start(์ฑ…)์˜ Day5 class01~02 ์‹ค์Šต์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๊ธฐ๋กํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์‹ค์Šตํ•œ ์ฝ”๋“œ์˜ ๋งํฌ์ž…๋‹ˆ๋‹ค. Mybatis ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ค‘์š”ํ•œ ํŠน์ง• ํ•œ ๋‘์ค„์˜ ์ž๋ฐ” ์ฝ”๋“œ๋กœ dB ์—ฐ๋™์„ ์ฒ˜๋ฆฌํ•œ๋‹ค SQL ๋ช…๋ น์–ด๋ฅผ java ์ฝ”๋“œ์—์„œ ๋ถ„๋ฆฌํ•˜์—ฌ XML ํŒŒ์ผ์— ๋”ฐ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค. Mybatis ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ Data Mapper๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. Mybatis๋Š” xmL ํŒŒ์ผ์— ์ €์žฅ๋œ SQL ๋ช…๋ น์–ด๋ฅผ ๋Œ€์‹  ์‹คํ–‰ํ•˜๊ณ  ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ VO ๊ฐ™์€ ๊ฐ์ฒด์— ์ž๋™์œผ๋กœ ๋งคํ•‘๊นŒ์ง€ ํ•ด์ค€๋‹ค. ====Mybatis ํ”„๋กœ์ ํŠธ ์ž‘์„ฑ๋ฐฉ๋ฒ•==== 1. pom.xml์— dependency ๋“ฑ๋กํ•˜๊ธฐ mysql mysql-connector-java 8.0.21 org.mybatis mybatis 3.5.6 org.apache.ibatis..
์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด์˜ service() ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๊ณผ์ • ๐Ÿ’ ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด์˜ service() ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๊ณผ์ • ๐Ÿง€ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ http ์š”์ฒญ์ด ์„œ๋ฒ„์— ์ „๋‹ฌ๋˜๋Š” ์ˆœ๊ฐ„ ๐Ÿง€ HttpServletRequest ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  HTTP ํ”„๋กœํ† ์ฝœ์— ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜์—ฌ HttpServletRequest ๊ฐ์ฒด์— ์ €์žฅํ•œ๋‹ค. (doGet(), doPost(), service() ๋ฉ”์†Œ๋“œ๊ฐ€ ์ •์ƒ์œผ๋กœ ํ˜ธ์ถœ๋˜๋ ค๋ฉด HttpServletRequest ์™€ HttpServletResponse ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.) ๐Ÿง€ ์ด HttpServletRequest ๊ฐ์ฒด๋ฅผ service() ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ธ์ž๋กœ ์ „๋‹ฌํ•ด์ค€๋‹ค. ๐Ÿง€ ๊ทธ๋ž˜์„œ service() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์š”์ฒญ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.