|
@@ -4,26 +4,26 @@ This repository provides a starter project for a CRUD application using Spring B
|
4
|
4
|
|
5
|
5
|
## Exercise
|
6
|
6
|
|
7
|
|
-Using this project as a starter, you will create a Person class as an entity to persist to H2 with an autogenerated id, and provide access to CRUD operations on those entities using a Spring Rest Controller supporting `GET`, `PUT`, `POST`, and `DELETE` operations. Spring Boot will handle the actual HTTP traffic and database components for you, you just need to build the last few pieces of the puzzle described in this lab.
|
|
7
|
+Using this project as a starter, you will create a Model.Person class as an entity to persist to H2 with an autogenerated id, and provide access to CRUD operations on those entities using a Spring Rest Controller supporting `GET`, `PUT`, `POST`, and `DELETE` operations. Spring Boot will handle the actual HTTP traffic and database components for you, you just need to build the last few pieces of the puzzle described in this lab.
|
8
|
8
|
|
9
|
9
|
As you are working on this lab, you can demo the behavior of your `GET` endpoints using your browser. For `PUT`, `POST`, and `DELETE` you will need a more robust tool, such as [Postman](https://www.getpostman.com/) or [curl](https://curl.haxx.se/).
|
10
|
10
|
|
11
|
11
|
### Part 1:
|
12
|
12
|
|
13
|
|
-Create a `Person` class with fields for first name, last name, and an id number.
|
|
13
|
+Create a `Model.Person` class with fields for first name, last name, and an id number.
|
14
|
14
|
|
15
|
|
-Create a `PersonController` class with `Person createPerson(Person p)`, `Person getPerson(int id)`, `List<Person> getPersonList()`, `Person updatePerson(Person p)`, and `void DeletePerson(int id)` methods, and let it track a list of Person objects.
|
|
15
|
+Create a `PersonController` class with `Model.Person createPerson(Model.Person p)`, `Model.Person getPerson(int id)`, `List<Model.Person> getPersonList()`, `Model.Person updatePerson(Model.Person p)`, and `void DeletePerson(int id)` methods, and let it track a list of Model.Person objects.
|
16
|
16
|
|
17
|
|
-Add the `@RestController` annotation to your `PersonController` class, and using the "Endpoints" list in the Reference section below, add the appropriate `@RequestMapping` annotations to each of your methods. Endpoints should be at `/people` and `/people/{id}` as appropriate. You will have to use `@PathVariable` for id numbers in the URI and `@RequestBody` for Person objects sent in the requests.
|
|
17
|
+Add the `@RestController` annotation to your `PersonController` class, and using the "Endpoints" list in the Reference section below, add the appropriate `@RequestMapping` annotations to each of your methods. Endpoints should be at `/people` and `/people/{id}` as appropriate. You will have to use `@PathVariable` for id numbers in the URI and `@RequestBody` for Model.Person objects sent in the requests.
|
18
|
18
|
|
19
|
19
|
|
20
|
20
|
### Part 2:
|
21
|
21
|
|
22
|
|
-Add the `@Entity` and `@Id` annotations to your Person class as shown in the Reference section. These tell Spring how to convert your Person objects to database entities when you pass them to a repository.
|
|
22
|
+Add the `@Entity` and `@Id` annotations to your Model.Person class as shown in the Reference section. These tell Spring how to convert your Model.Person objects to database entities when you pass them to a repository.
|
23
|
23
|
|
24
|
|
-Create a `PersonRepository` interface that extends the `CrudRepository` interface. Be sure to specify the `Person` type parameter on `CrudRepository<>`. You will not need to implement this interface as Spring automatically generates an implementation at runtime.
|
|
24
|
+Create a `PersonRepository` interface that extends the `CrudRepository` interface. Be sure to specify the `Model.Person` type parameter on `CrudRepository<>`. You will not need to implement this interface as Spring automatically generates an implementation at runtime.
|
25
|
25
|
|
26
|
|
-Update your controller logic to use the `PersonRepository` instead of manually tracking Person objects in a list. You will need a `PersonRepository` field marked with the `@Autowired` annotation -- again, Spring will provide an implementation here automatically. You will need to use the `findAll()`, `findOne(id)`, `save(Person)` and `delete(id)` methods of `PersonRepository` to fetch and save Person objects.
|
|
26
|
+Update your controller logic to use the `PersonRepository` instead of manually tracking Model.Person objects in a list. You will need a `PersonRepository` field marked with the `@Autowired` annotation -- again, Spring will provide an implementation here automatically. You will need to use the `findAll()`, `findOne(id)`, `save(Model.Person)` and `delete(id)` methods of `PersonRepository` to fetch and save Model.Person objects.
|
27
|
27
|
|
28
|
28
|
### Part 3:
|
29
|
29
|
|
|
@@ -46,11 +46,11 @@ Now that your CRUD application is working, it's time to make sure the correct HT
|
46
|
46
|
- `DELETE /people/{id}` - delete the person with id number `{id}`
|
47
|
47
|
- Response: `204 No Content`
|
48
|
48
|
|
49
|
|
-**Person class and ID configuration for H2**:
|
|
49
|
+**Model.Person class and ID configuration for H2**:
|
50
|
50
|
|
51
|
51
|
```Java
|
52
|
52
|
@Entity
|
53
|
|
-public class Person {
|
|
53
|
+public class Model.Person {
|
54
|
54
|
|
55
|
55
|
@Id
|
56
|
56
|
@GeneratedValue(strategy = GenerationType.AUTO)
|