-
Notifications
You must be signed in to change notification settings - Fork 0
[기능구현] Validator 처리를 위한 커스터마이징
이은비 edited this page Jun 30, 2023
·
2 revisions
빈집 게시글의 제한사항 중 게시글의 순수 내용 길이가 10,000자를 넘어설 수 없다는 것이 있다. 단순히 길이에 대한 유효성 검사라면 Validation 어노테이션에서 지원하는 @Size 어노테이션을 사용하면 된다. 하지만, 주말의집 서비스에서는 이를 사용할 수 없다.
{
"rentalType" : "SALE",
"city": "서울시 서대문구 남가좌동 거북골로 34",
"zipCode" : "12345",
"size" : "1234556777",
"purpose": "주택 ( 방1, 화장실 1 )",
"floorNum" : 2,
"contact": "01012345678",
"createdDate": "2000",
"price" : 150000,
"monthlyPrice": null,
"agentName": "부자부동산",
"title" : "제목",
"code": "<body> <div> <h2>글자수가 10,000자를 넘어서는지 테스트해보기 위한 글입니다. 행복부동산 최신 매물입니다.</h2> </div> <div> 오도이촌, 세컨하우스를 꿈꾸고 있는 여러분, 오도이촌으로 어떤 지역을 꿈꾸고 계시나요? 오도이촌을 위해 세컨하우스를 택할 지역을 고를 때 가장 중요한 기준으로는 ‘편리한 교통’, ‘수려한 자연환경’, ‘뛰어난 편의시설’ 등이 있는데요. 이번 컨텐츠에서는 어떤 지역이 여러분의 세컨하우스 기준을 충족하는 지역일지 제시해 드리고자 합니다. 경기도 도심과 가까운 지역, 양평 양평은 도심과 가깝고 교통이 좋아 오도이촌으로 특히 인기가 많은 지역입니다. 1) 용이한 교통 양평은 서울에서 차로 약 50분 거리에 위치해있는데요. 경의중앙선 용문역, 6번 국도 등 교통 인프라가 잘 갖추어져 있습니다. 인근에는 서울 송파~양평 고속도로 개통(2023년 예정)도 앞두고 있어 교통환경이 더욱 개선될 전망입니다. 2) 관광지/자연환경 양평은 용문 5일장, 용문사, 중원계곡, 용문 관광단지 등으로도 유명합니다. 볼거리와 먹을거리, 놀거리가 많고 레저활동을 하기 좋은 여건을 갖추고 있습니다. 또한 용문산과 북한강이 어우러진 입지로, 하늘과 숲과 물이 하나가 되는 자연환경을 누릴 수 있습니다. 3) 문화시설/편의시설 자연경관과 공기가 좋은 곳 뿐만 아니라 문화시설/편의시설이 있는 곳도 중요합니다. 시골은 특히나 대형마트가 부족한데 양평은 비교적 대형마트와 생활 편의시설이 많은 곳에 속합니다. 세컨하우스를 찾는 사람들의 양평 대표 지역은 서종면, 옥천면, 용문면, 강하면이 대표적입니다. 양평 중에서도 문화공간이 가까이 있는 곳은 ‘서종면’ 쪽입니다. 양평과 비슷한 지역으로는 경기도 광주, 가평 등이 있습니다. 매경이코노미가 부동산 전문가, 금융권 프라이빗 뱅커(PB) 30인을 대상으로 설문조사한 결과 세컨드하우스를 마련하기 좋은 곳 1위로 ‘경기도 양평’이 꼽혔다. 복수응답 기준으로 총 20표를 얻었습니다. 이어 2위는 ‘가평(12표)’, 3위는 ‘남양주(7표)’로 경기도 소재 시군이 1~3위를 휩쓸었다고 합니다. 강원도 비과세 혜택 오도이촌, 세컨하우스를 꿈꾸고 있는 여러분, 오도이촌으로 어떤 지역을 꿈꾸고 계시나요? 오도이촌을 위해 세컨하우스를 택할 지역을 고를 때 가장 중요한 기준으로는 ‘편리한 교통’, ‘수려한 자연환경’, ‘뛰어난 편의시설’ 등이 있는데요. 이번 컨텐츠에서는 어떤 지역이 여러분의 세컨하우스 기준을 충족하는 지역일지 제시해 드리고자 합니다. 경기도 도심과 가까운 지역, 양평 양평은 도심과 가깝고 교통이 좋아 오도이촌으로 특히 인기가 많은 지역입니다. 1) 용이한 교통 양평은 서울에서 차로 약 50분 거리에 위치해있는데요. 경의중앙선 용문역, 6번 국도 등 교통 인프라가 잘 갖추어져 있습니다. 인근에는 서울 송파~양평 고속도로 개통(2023년 예정)도 앞두고 있어 교통환경이 더욱 개선될 전망입니다. 2) 관광지/자연환경 양평은 용문 5일장, 용문사, 중원계곡, 용문 관광단지 등으로도 유명합니다. 볼거리와 먹을거리, 놀거리가 많고 레저활동을 하기 좋은 여건을 갖추고 있습니다. 또한 용문산과 북한강이 어우러진 입지로, 하늘과 숲과 물이 하나가 되는 자연환경을 누릴 수 있습니다. 3) 문화시설/편의시설 자연경관과 공기가 좋은 곳 뿐만 아니라 문화시설/편의시설이 있는 곳도 중요합니다. 시골은 특히나 대형마트가 부족한데 양평은 비교적 대형마트와 생활 편의시설이 많은 곳에 속합니다. 세컨하우스를 찾는 사람들의 양평 대표 지역은 서종면, 옥천면, 용문면, 강하면이 대표적입니다. 양평 중에서도 문화공간이 가까이 있는 곳은 ‘서종면’ 쪽입니다. 양평과 비슷한 지역으로는 경기도 광주, 가평 등이 있습니다. 매경이코노미가 부동산 전문가, 금융권 프라이빗 뱅커(PB) 30인을 대상으로 설문조사한 결과 세컨드하우스를 마련하기 좋은 곳 1위로 ‘경기도 양평’이 꼽혔다. 복수응답 기준으로 총 20표를 얻었습니다. 이어 2위는 ‘가평(12표)’, 3위는 ‘남양주(7표)’로 경기도 소재 시군이 1~3위를 휩쓸었다고 합니다. 강원도 비과세 혜택오도이촌, 세컨하우스를 꿈꾸고 있는 여러분, 오도이촌으로 어떤 지역을 꿈꾸고 계시나요? 오도이촌을 위해 세컨하우스를 택할 지역을 고를 때 가장 중요한 기준으로는 ‘편리한 교통’, ‘수려한 자연환경’, ‘뛰어난 편의시설’ 등이 있는데요. 이번 컨텐츠에서는 어떤 지역이 여러분의 세컨하우스 기준을 충족하는 지역일지 제시해 드리고자 합니다. 경기도 도심과 가까운 지역, 양평 양평은 도심과 가깝고 교통이 좋아 오도이촌으로 특히 인기가 많은 지역입니다. 1) 용이한 교통 양평은 서울에서 차로 약 50분 거리에 위치해있는데요. 경의중앙선 용문역, 6번 국도 등 교통 인프라가 잘 갖추어져 있습니다. 인근에는 서울 송파~양평 고속도로 개통(2023년 예정)도 앞두고 있어 교통환경이 더욱 개선될 전망입니다. 2) 관광지/자연환경 양평은 용문 5일장, 용문사, 중원계곡, 용문 관광단지 등으로도 유명합니다. 볼거리와 먹을거리, 놀거리가 많고 레저활동을 하기 좋은 여건을 갖추고 있습니다. 또한 용문산과 북한강이 어우러진 입지로, 하늘과 숲과 물이 하나가 되는 자연환경을 누릴 수 있습니다. 3) 문화시설/편의시설 자연경관과 공기가 좋은 곳 뿐만 아니라 문화시설/편의시설이 있는 곳도 중요합니다. 시골은 특히나 대형마트가 부족한데 양평은 비교적 대형마트와 생활 편의시설이 많은 곳에 속합니다. 세컨하우스를 찾는 사람들의 양평 대표 지역은 서종면, 옥천면, 용문면, 강하면이 대표적입니다. 양평 중에서도 문화공간이 가까이 있는 곳은 ‘서종면’ 쪽입니다. 양평과 비슷한 지역으로는 경기도 광주, 가평 등이 있습니다. 매경이코노미가 부동산 전문가, 금융권 프라이빗 뱅커(PB) 30인을 대상으로 설문조사한 결과 세컨드하우스를 마련하기 좋은 곳 1위로 ‘경기도 양평’이 꼽혔다. 복수응답 기준으로 총 20표를 얻었습니다. 이어 2위는 ‘가평(12표)’, 3위는 ‘남양주(7표)’로 경기도 소재 시군이 1~3위를 휩쓸었다고 합니다. 강원도 비과세 혜택오도이촌, 세컨하우스를 꿈꾸고 있는 여러분, 오도이촌으로 어떤 지역을 꿈꾸고 계시나요? 오도이촌을 위해 세컨하우스를 택할 지역을 고를 때 가장 중요한 기준으로는 ‘편리한 교통’, ‘수려한 자연환경’, ‘뛰어난 편의시설’ 등이 있는데요. 이번 컨텐츠에서는 어떤 지역이 여러분의 세컨하우스 기준을 충족하는 지역일지 제시해 드리고자 합니다. 경기도 도심과 가까운 지역, 양평 양평은 도심과 가깝고 교통이 좋아 오도이촌으로 특히 인기가 많은 지역입니다. 1) 용이한 교통 양평은 서울에서 차로 약 50분 거리에 위치해있는데요. 경의중앙선 용문역, 6번 국도 등 교통 인프라가 잘 갖추어져 있습니다. 인근에는 서울 송파~양평 고속도로 개통(2023년 예정)도 앞두고 있어 교통환경이 더욱 개선될 전망입니다. 2) 관광지/자연환경 양평은 용문 5일장, 용문사, 중원계곡, 용문 관광단지 등으로도 유명합니다. 볼거리와 먹을거리, 놀거리가 많고 레저활동을 하기 좋은 여건을 갖추고 있습니다. 또한 용문산과 북한강이 어우러진 입지로, 하늘과 숲과 물이 하나가 되는 자연환경을 누릴 수 있습니다. 3) 문화시설/편의시설 자연경관과 공기가 좋은 곳 뿐만 아니라 문화시설/편의시설이 있는 곳도 중요합니다. 시골은 특히나 대형마트가 부족한데 양평은 비교적 대형마트와 생활 편의시설이 많은 곳에 속합니다. 세컨하우스를 찾는 사람들의 양평 대표 지역은 서종면, 옥천면, 용문면, 강하면이 대표적입니다. 양평 중에서도 문화공간이 가까이 있는 곳은 ‘서종면’ 쪽입니다. 양평과 비슷한 지역으로는 경기도 광주, 가평 등이 있습니다. 매경이코노미가 부동산 전문가, 금융권 프라이빗 뱅커(PB) 30인을 대상으로 설문조사한 결과 세컨드하우스를 마련하기 좋은 곳 1위로 ‘경기도 양평’이 꼽혔다. 복수응답 기준으로 총 20표를 얻었습니다. 이어 2위는 ‘가평(12표)’, 3위는 ‘남양주(7표)’로 경기도 소재 시군이 1~3위를 휩쓸었다고 합니다. 강원도 비과세 혜택오도이촌, 세컨하우스를 꿈꾸고 있는 여러분, 오도이촌으로 어떤 지역을 꿈꾸고 계시나요? 오도이촌을 위해 세컨하우스를 택할 지역을 고를 때 가장 중요한 기준으로는 ‘편리한 교통’, ‘수려한 자연환경’, ‘뛰어난 편의시설’ 등이 있는데요. 이번 컨텐츠에서는 어떤 지역이 여러분의 세컨하우스 기준을 충족하는 지역일지 제시해 드리고자 합니다. 경기도 도심과 가까운 지역, 양평 양평은 도심과 가깝고 교통이 좋아 오도이촌으로 특히 인기가 많은 지역입니다. 1) 용이한 교통 양평은 서울에서 차로 약 50분 거리에 위치해있는데요. 경의중앙선 용문역, 6번 국도 등 교통 인프라가 잘 갖추어져 있습니다. 인근에는 서울 송파~양평 고속도로 개통(2023년 예정)도 앞두고 있어 교통환경이 더욱 개선될 전망입니다. 2) 관광지/자연환경 양평은 용문 5일장, 용문사, 중원계곡, 용문 관광단지 등으로도 유명합니다. 볼거리와 먹을거리, 놀거리가 많고 레저활동을 하기 좋은 여건을 갖추고 있습니다. 또한 용문산과 북한강이 어우러진 입지로, 하늘과 숲과 물이 하나가 되는 자연환경을 누릴 수 있습니다. 3) 문화시설/편의시설 자연경관과 공기가 좋은 곳 뿐만 아니라 문화시설/편의시설이 있는 곳도 중요합니다. 시골은 특히나 대형마트가 부족한데 양평은 비교적 대형마트와 생활 편의시설이 많은 곳에 속합니다. 세컨하우스를 찾는 사람들의 양평 대표 지역은 서종면, 옥천면, 용문면, 강하면이 대표적입니다. 양평 중에서도 문화공간이 가까이 있는 곳은 ‘서종면’ 쪽입니다. 양평과 비슷한 지역으로는 경기도 광주, 가평 등이 있습니다. 매경이코노미가 부동산 전문가, 금융권 프라이빗 뱅커(PB) 30인을 대상으로 설문조사한 결과 세컨드하우스를 마련하기 좋은 곳 1위로 ‘경기도 양평’이 꼽혔다. 복수응답 기준으로 총 20표를 얻었습니다. 이어 2위는 ‘가평(12표)’, 3위는 ‘남양주(7표)’로 경기도 소재 시군이 1~3위를 휩쓸었다고 합니다. 강원도 비과세 혜택</div> </body>",
"imageUrls" : ["img-001"],
"tmpYn": false
}
빈집 게시글을 생성하기 위해 필요한 데이터이다. 데이터 중 code
값을 보면, html 태그가 섞여 있는 것을 확인할 수 있다. 이 값이 사용자가 에디터를 통해 작성한 게시글 내용이다. 순수한 게시글 내용이 10,000자 넘어서는지 확인하는 처리를 front 단에서 하기 보다는 back 단에서 처리하는 편이 수월할 것이라고 판단하여 back 단에서 유효성 검사를 진행하기로 했다.
이를 위해서는 순수한 게시글 내용 길이만을 추출해야 한다. 이를 위해 ConstraintValidator
를 상속받아 커스터마이징한 validator를 구현했다.
class CodeValidator : ConstraintValidator<CodeValid, String>{
override fun isValid(value: String, context: ConstraintValidatorContext?): Boolean {
val contents = getContent(value)
return contents.length <= 10000
}
}
@Target(*[AnnotationTarget.FIELD])
@Retention(AnnotationRetention.RUNTIME)
@Constraint(validatedBy = [CodeValidator::class])
@Documented
annotation class CodeValid(
val message: String = "게시글의 내용이 10,000자를 넘을 수 없습니다.",
val groups: Array<KClass<*>> = [],
val payload: Array<KClass<out Payload>> = []
)
게시글의 내용 길이가 10,000자를 초과하면 400 코드에 "게시글의 내용이 10,000자를 넘을 수 없다."라고 에러 문구를 보낸다.
이를 편하게 사용하기 위해 어노테이션으로 만들어 DTO에 code 값에 대해서만 적용하도록 하였다.
적용 과정 및 코드리뷰의 내용은 여기에서 확인할 수 있다.