From 0daf8aba9b13d5bed05155f5f07453f7dfa5ab53 Mon Sep 17 00:00:00 2001 From: JinHwanKim Date: Sun, 24 Mar 2024 07:50:59 +0900 Subject: [PATCH] Update README.md --- README.md | 204 +++++++++++++++++++++++++----------------------------- 1 file changed, 95 insertions(+), 109 deletions(-) diff --git a/README.md b/README.md index 5161b2c..a9c36ca 100644 --- a/README.md +++ b/README.md @@ -1,165 +1,151 @@ # fast-crud -Automatic creation of simple CRUD API of Spring boot and JPA project. +매번 반복되는 Spring boot & JPA 의 기본적인 CRUD API 를 자동화 할 수 있지 않을까? -
+latest version : 1.0.1 -## How to use +## 기능들 +- 어노테이션 표시로 엔티티의 Create, Read, Update, Delete API 가 생성된다. +- 자동 생성된 API의 Root path 를 설정할 수 있다. +- CRUD 중 추가할, 또는 제외할 기능을 선택할 수 있다. -#### Step 1. Add the dependency. +## 미리보기 +``` java +@CRUD(repositoryType = SampleRepository.class) +@Entity +class Sample { +} +``` -
-Gradle (build.gradle) +Entity 의 @CRUD 를 읽어, 아래의 API가 자동 생성된다. - ``` groovy +``` +[POST] /sample +[GET] /sample +[GET] /sample/{id} +[PUT] /sample +[DELETE] /sample/{id} +``` + +## 사용 방법 + +### build.gradle + +라이브러리 의존성을 추가한다. +``` repositories { maven { url 'https://jitpack.io' } } -``` - ``` groovy dependencies { - implementation 'com.github.ecsimsw:fast-crud:0.0.2' + implementation 'com.github.ecsimsw:api-shutdown:1.0.1' } ``` -
-
-Maven (pom.xml) - -``` xml - - - jitpack.io - https://jitpack.io - - -``` -``` xml - - com.github.ecsimsw - fast-crud - 0.0.2 - -``` +### @EnableCrud 추가 + +@EnableCrud 로 라이브러리 사용을 활성화한다. -
+``` java +@EnableCrud +@SpringBootApplication +public class MyApplication {} +``` -
+### @CRUD 표시 -#### Step 2. Put @CRUD on your entity class. +CRUD 를 적용할 Entity에 @CRUD와 엔티티 Repository type 를 표시한다. ``` java -@CRUD +@CRUD(repositoryType = SampleRepository.class) @Enity class Sample { } ``` -
- -#### Step 3. Declare JpaRepository with entity name. - ``` java -public interface SampleRepository extends JpaRepository {} +interface SampleRepository extends JpaRepository { +} ``` -
+### API 명세 -#### Step 4. That's it. You just made basic CRUD http api bellow. +아래 CRUD api 가 자동 생성된다. +생성과 수정의 Request body 에는 Entity 의 프로퍼티 키와 값이 포함된다. -| |HttpMethod|Path|RequestBody (Json)| -|----|------|----|-----| -|save|POST|/{entityName}|O| -|findAll|GET|/{entityName}|X| -|findById|GET|/{entityName}/{id}|X| -|update|PUT|/{entityName}/{id}|O| -|delete|DELETE|/{entityName}/{id}|X| +#### 생성 +``` +[POST] /sample +{ + "name" : "ecsimsw" +} +``` -
+#### 조회 -#### Step 5. Example -``` java -@CRUD -@Entity -public class Sample { - - @GeneratedValue - @Id - private Long id; - private String name; - - public Sample() { - } - - public Sample(String name) { - this.name = name; - } - - public Long getId() { - return id; - } - - public String getName() { - return name; - } -} +``` +[GET] /sample/{id} ``` -``` java -public interface SampleRepository extends JpaRepository {} +#### 전체 조회 +``` +[GET] /sample ``` -``` -[POST] localhost:8080/sample -{ - "name" : "ecsimsw" -} -[PUT] localhost:8080/sample/1 +#### 수정 + +``` +[PUT] /sample/{id} { - "name" : "new_name" + "name" : "new_name" } -[GET] localhost:8080/sample -[GET] localhost:8080/sample/1 -[DELETE] localhost:8080/sample/1 ``` -
- -## Additional features - -#### Repository name - -You can set your repository bean name in @CRUD with `repositoryBean` parameter. +#### 삭제 -``` java -@CRUD(repositoryBean = "anotherName") ``` - -``` java -public interface AnotherName extends JpaRepository {} +[DELETE] /sample/{id} ``` -
+### Root path 설정 -#### API root path - -You can set your api `root path` +기본 API 기본 경로는 Entity 이름이다. @CRUD 어노테이션의 rootPath 값으로 API 기본 경로를 변경할 수 있다. +아래 예시의 경우 `/api/sample` 으로 API 경로가 생성된다. ``` java -@CRUD(rootPath = "anotherRoot") +@CRUD(rootPath = "api/sample") +@Entity +class Sample {} ``` +### 제외 기능 설정 + +CRUD 중 제외할 기능을 명시할 수 있다. +아래 예시의 겨우 엔티티의 수정과 삭제 기능없이, 생성과 조회 API 만 자동 생성된다. + ``` -/anotherRoot -/anotherRoot/{id} +@CRUD(excludeType = {CrudType.DELETE, CrudType.UPDATE}) +@Entity +class Sample { ``` -
+## 변경 사항 -#### Exclude method +### v1.0.0 -Method can be excluded in @CRUD with `exclude` parameter. +Spring boot 2.6 이상부터 MVC 핸들러 매핑 경로 매칭 기본 전략이 AntPathMatcher -> PathPatternParser 로 수정되었다. RequestMappingHandlerMapping 에 추가되는 RequestMappingInfo 에 PathMatcher 를 설정하는 것으로, 기본 전략은 유지한 채 라이브러리에서 자동 생성하는 RequestMapping 정보만 AntPathMatcher를 따르도록 수정한다. ``` java -@CRUD(exclude = {CrudMethod.UPDATE, CrudMethod.DELETE}) +public HandlerInfo(CrudRequestHandler handlerInstance, RequestMethod httpMethod, String requestPath) { + this.handler = handlerInstance; + var buildConfig = new RequestMappingInfo.BuilderConfiguration(); + buildConfig.setPathMatcher(new AntPathMatcher()); + buildConfig.setPatternParser(new PathPatternParser()); + this.requestMappingInfo = RequestMappingInfo + .paths(requestPath) + .methods(httpMethod) + .options(buildConfig) + .build(); +} ``` + +