์ ์ฒด ๊ธ (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() ๋ฉ์๋๋ฅผ ํตํด ๋ค์ํ ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ๊ตฌํํ ์ ์๋ค. ์ด์ 1 ยทยทยท 3 4 5 6 7 8 9 ยทยทยท 14 ๋ค์