-
10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 초격차 패키지 Online. 2.2.6: API 구현 ~ 7:뷰 엔드포인트 정의백엔드/spring 2023. 2. 1. 17:49
A.
@RepositoryRestResource public interface ArticleRepository extends JpaRepository<Article,Long>, QuerydslPredicateExecutor<Article>, QuerydslBinderCustomizer<QArticle> { }
- QuerydslPredicateExecutor<Article>
- <Article> Entity 안에 있는 모든 field 에 대한 기본 검사 기능을 추가해준다.
- QuerydslBinderCustomizer<QArticle>
- QuerydslPredicateExecutor만으로는 exact match만 가능하여, 부분 검색도 가능하게 하기 위해 이것을 추가.
- QuerydslPredicateExecutor만으로는 exact match만 가능하여, 부분 검색도 가능하게 하기 위해 이것을 추가.
QuerydslPredicateExecutor을 Article 과 ArticleComment class 에 extend 로 각각 추가해줬을 때, build.gradle을 refresh하지 않고 실행하여 spring no class def found error 가 나타났고, refresh 후 실행하여 잘 해결되었다.
항상 build.gradle을 수정했으면 꼭 refresh 해주자!!
B.
get()
ctrl + space 바 ->MockMvcRequestBuilders~~
에 alt+enter
C. customize
@Override default void customize(QuerydslBindings bindings, QArticle root){ bindings.excludeUnlistedProperties(true); bindings.including(root.title,root.content,root.hashtag,root.createdAt,root.createdBy); bindings.bind(root.title).first(StringExpression::containsIgnoreCase); bindings.bind(root.content).first(StringExpression::containsIgnoreCase); bindings.bind(root.hashtag).first(StringExpression::containsIgnoreCase); bindings.bind(root.createdAt).first(DateTimeExpression::eq); bindings.bind(root.createdBy).first(StringExpression::containsIgnoreCase); }
customize를 구현하여 검색에 대한 세부적인 내용을 재구성한다.
7:뷰 엔드포인트 정의 D. test가 통과하지 않을때, gradle build가 통과하지 않을 수 있다. gradle build의 기본 동작은 test 과정을 내포하고 있다. 그렇기 때문에, build가 통과하지 않을 수 있어 많은 팀들의 commit 최소 조건으로 test가 통과할 것을 설정하고 있다. '백엔드 > spring' 카테고리의 다른 글
spring "Argument are different!" 해결 (0) 2023.02.09 Spring boot: pageable, getReferencedId (0) 2023.02.06 Spring Security - @WebSecurityConfigurerAdapter 변경(+ spring security dependencies 설정) (0) 2023.02.02 Thymeleaf 와 뷰 템플릿 엔진 원리 (0) 2023.02.02 spring 과 Rest API 에 대해 (0) 2023.02.01 - QuerydslPredicateExecutor<Article>