0329 ~ 0403
# 0329 ~ 0403
# 0329 - @RequestMapping
์์ฒญ์ ํน์ ๋ฉ์๋์ ๋งคํํ๊ธฐ ์ํด ์ฌ์ฉ.
- name : ํด๋น ์ด๋ ธํ ์ด์ ์๊ฒ ๋ณ์นญ์ ๋ถ์ด๊ธฐ ์ํด ์ฌ์ฉ
- value : ์ฒ๋ฆฌํ uri ํจํด๋ค(String ๋ฐฐ์ด)์ ๊ธฐ์
?: matches one character
*: matches zero or more characters within a path segment
**: match zero or more path segments
- path : value์ ๊ฐ์ ๋ชฉ์
- method : ํน์ http method๋ง ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์ ํ ๋ ์ฌ์ฉ
- params : ํน์ ํ๋ผ๋ฏธํฐ๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ๋ง ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์ ํ ๋ ์ฌ์ฉ
RequestMapping(value="hello", params="id"): /hello?id=123 ์ฒ๋ฆฌ ๊ฐ๋ฅ
RequestMapping(value="hello", params="id=1234"): /hello?id=123 ์ฒ๋ฆฌ ๋ถ๊ฐ๋ฅ, /hello?id=1234 ์ฒ๋ฆฌ ๊ฐ๋ฅ
- headers : ํน์ ํค๋๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ๋ง ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์ ํ ๋ ์ฌ์ฉ
- consumes : ํน์ ํ์ ์ ๋ฐ๋๋ฅผ ๊ฐ์ง๋ ์์ฒญ๋ง์ ์ฒ๋ฆฌํ๊ณ ์ ํ ๋ ์ฌ์ฉ
- produces : ์๋ต์ ํ์ ์ ํน์ ํ์ ์ผ๋ก ์ค์ ํ๊ณ ์ ํ ๋ ์ฌ์ฉ
# 0330 - query dsl ์ธํ by gradle
query dsl ์ค์ ์ ๋ํ์ ์ผ๋ก 2๊ฐ์ง์ด๋ค. querydsl plugin
์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ annotationProcessor
์ ์ด์ฉํ์ฌ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
# querydsl plugin
ext {
set('queryDSL', '4.3.1')
}
dependencies {
implementation "com.querydsl:querydsl-jpa:${queryDSL}"
annotationProcessor "com.querydsl:querydsl-apt:${queryDSL}:jpa"
// ๋๋
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa"
annotationProcessor 'org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final'
annotationProcessor 'javax.annotation:javax.annotation-api:1.3.2'
...
}
# annotationProcessor
plugins {
...
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}
compileQuerydsl{
options.annotationProcessorPath = configurations.querydsl
}
configurations {
...
querydsl.extendsFrom compileClasspath
}
def querydslSrcDir = 'src/querydsl/generated'
querydsl {
library = "com.querydsl:querydsl-apt"
jpa = true
querydslSourcesDir = querydslSrcDir
}
sourceSets {
main {
java {
srcDirs = ['src/main/java', querydslSrcDir]
}
}
}
project.afterEvaluate {
project.tasks.compileQuerydsl.options.compilerArgs = [
"-proc:only",
"-processor", project.querydsl.processors() +
',lombok.launch.AnnotationProcessorHider$AnnotationProcessor'
]
}
dependencies {
implementation("com.querydsl:querydsl-jpa") // querydsl
implementation("com.querydsl:querydsl-apt") // querydsl
...
}
# ์ฐจ์ด์
# complieQuerydsl ์์
- querydsl plugin์ ์ฌ์ฉํ๊ฒ ๋๋ฉด, querydsl์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ gradle option์ ์๋ compileQuerydsl ์ฌ์ฉํ๊ฑฐ๋, build๋ฅผ ํตํด์ compile์ด ๋์ด์ผ ์์ฑ๋๋ค.
- ํด๋น ๋ฐฉ์์ ์ด์ฉํ๊ฒ ๋๋ฉด, compileJava ์์ ์ querydsl QModel์ด ์์ฑ์ด ๋๋ค.
- ์ฆ, intellij์ Run, Debug๋ฅผ ํตํด์ ์๋ฒ๋ฅผ ์คํํ ๋๋ ์๋์ผ๋ก ์ต์ querydsl QModel์ ์์ฑํ๊ฒ ๋๋ค.
# Cache ์ ๋ฌด
- gradle์ cache๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ org.gradle.caching=true ์ค์ ์ ํด์ฃผ์ด์ผ ํ๋ค.
- querydsl plugin์ ์ด์ฉํด์๋ cache๊ฐ ๊ฐ๋ฅํ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง annotationProcessor ๋ฐฉ์์ ์ด์ฉํ๋ฉด Cache๊ฐ ๊ฐ๋ฅํ๋ค.
- ๊ทธ ์ด์ ๋ compileJava ๋ถ๋ถ์ QModel์ ์์ฑํ๊ธฐ์ ๋ณ๊ฒฝ์ด ๋ฐ์ํ์ง ์๋๋ค๋ฉด gradle์์ ์ฆ๋ถ ์ปดํ์ผ ์ต์ ์ ์ํด์ cache key๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
# ๋ง์น๋ฉฐ
- cache๋ฅผ ํ๊ธฐ ์ํด์๋ ๊ฐ์ ๋ถ๋ถ์ ๋ณ๊ฒฝ์ด ์์ด์ผ์ง๋ง cache๋ฅผ ์ด์ฉํ๊ธฐ์ ๋ฌด์กฐ๊ฑด ์ข์์ง๋ ๊ฒ์ ์๋๋ค.
- ๋ํ, build์์ gradle cache key๋ฅผ ๋งค๋ฒ ๋ณ๊ฒฝ์ํค๋ ๋ก์ง์ด ํฌํจ๋์ด ์๋ค๋ฉด, cache๋ฅผ ์ด์ฉํ์ง ๋ชป ํ๋ค.(ex: download files, springboot-buildInfo etc)
- querydsl plugin์ ๋ ์ด์ ๊ฐ๋ฐ์ด ๋๊ณ ์๋์ง ๋ชจ๋ฅด๊ฒ ๊ณ , gradle์์ deprecated๋ compile์ ์ฌ์ฉํ๊ณ ์์ด ์ถํ gradle version์ ์ฌ๋ฆด๋ ์ ์ฝ์ฌํญ์ด ๋ ๊บผ ๊ฐ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ข์๋ณด์ธ๋ค.