[Spring JPA #17] 스프링 데이터 DomainClassConverter
- Spring/Spring JPA
- 2019. 2. 1. 18:54
반응형
| 스프링 데이터 DomainClassConverter
- 스프링에서 Converter는 컨트롤러에 사용자 요청이 오게될 때, 요청값을 다른 타입으로 변환하여 컨트롤러의 메서드에 전달하는 역할을 하는 인터페이스를 의미합니다.
- DomainClassConverter는 이 개념을 확장하여 어떤 사용자 요청에 대한 요청값을 도메인 클래스로 변환하여 컨트롤러의 메서드에 전달하는 Converter를 의미합니다.
| 스프링 데이터 DomainClassConverter 예제
프로젝트 구조
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── tutorial
│ │ │ └── springevent
│ │ │ ├── Application.java
│ │ │ ├── PostController.java
│ │ │ ├── Post.java
│ │ │ └── PostRepository.java
│ │ └── resources
│ │ └── application.properties
│ └── test
│ └── java
│ └── com
│ └── tutorial
│ └── springevent
│ └── PostControllerTest.java
의존성 관리
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
소스 코드
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@Entity
@Data
public class Post {
@Id @GeneratedValue
private Long id;
private String title;
@Temporal(TemporalType.TIMESTAMP)
private Date created;
}
@RestController
public class PostController {
@Autowired
PostRepository postRepository;
@GetMapping("/posts/{id}")
public Post getPost(@PathVariable("id") Post post) {
return post;
}
}
- /posts/{id}로 id를 매개변수로 받아서 메서드의 인자값으로 전달하는 것을 볼 수 있습니다. 이때 Post 도메인 클래스에 맞게 DomainClassConverter가 id 매개변수를 변환하여 Post 객체형태로 전달되게 됩니다.
public interface PostRepository extends JpaRepository<Post, Long> {
}
테스트 코드
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class PostControllerTest {
@Autowired
MockMvc mockMvc;
@Autowired
PostRepository postRepositry;
@Test
public void getPost() throws Exception {
Post post = new Post();
post.setTitle("jpa");
postRepositry.save(post);
mockMvc.perform(get("/posts/" + post.getId()))
.andDo(print())
.andExpect(status().isOk())
.andExpect(content().string(containsString("1")))
.andExpect(content().string(containsString("jpa")));
}
}
https://www.inflearn.com/course/스프링-데이터-jpa
반응형
'Spring > Spring JPA' 카테고리의 다른 글
[Spring JPA #19] 스프링 데이터 HATEOAS (0) | 2019.02.01 |
---|---|
[Spring JPA #18] 스프링 데이터 Pageable과 Sort (0) | 2019.02.01 |
[Spring JPA #16] 스프링 데이터 QueryDsl (0) | 2019.01.31 |
[Spring JPA #15] 스프링 데이터 도메인 이벤트 (0) | 2019.01.31 |
[Spring JPA #14] 스프링 데이터 커스텀 리포지터리 만들기 (0) | 2019.01.31 |
이 글을 공유하기