스프링 MVC 설정(7) : WebMvcConfigure - 도메인 클래스 컨버터

de_sj_awa·2021년 6월 27일
0

8. WebMvcConfigure - 도메인 클래스 컨버터

public class Person {

    private Long id;

    private String name;
  
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
    
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
@RestController
public class SampleController {

    @GetMapping("/hello")
    public String hello(@RequestParam("id") Person person){
        return "hello " + person.getName();
    }

다음과 같이 id가 들어오는 경우에 객체의 이름을 반환하는 경우 Formatter나 Converter를 직접 만들 필요가 없다. 이 경우에는 스프링 데이터 JPA의 도움을 받을 수 있다.

스프링 데이터 JPA는 스프링 MVC용 도메인 클래스 컨버터를 제공한다.

도메인 클래스 컨버터

  • 스프링 데이터 JPA가 제공하는 Repository를 사용해서 ID에 해당하는 엔티티를 읽어온다.

pom.xml에 의존성 추가

<dependency> 
	<groupId>org.springframework.boot</groupId> 
	<artifactId>spring-boot-starter-data-jpa</artifactId> 
</dependency> 
	<dependency> 
	<groupId>com.h2database</groupId> 
	<artifactId>h2</artifactId> 
</dependency>

도메인 클래스

@Entity
public class Person {

    @Id @GeneratedValue // 아이디를 DB에 들어갈 때 자동생성한다.
    private Long id;

    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
    
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

리포지토리

public interface PersonRepository extends JpaRepository<Person, Long> {

}

<엔티티, 키값에 해당하는 타입>

테스트 코드

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class SampleControllerTest {

    @Autowired
    MockMvc mockMvc;

    @Autowired
    PersonRepository personRepository;

    @Test
    public void hello() throws Exception{
        Person person = new Person();
        person.setName("spring");
        Person savedPerson = personRepository.save(person);

        this.mockMvc.perform(get("/hello")
                .param("id", savedPerson.getId().toString()))
                .andDo(print())
                .andExpect(content().string("hello spring"));
    }
}

참고

  • 인프런 : 스프링 웹 MVC(백기선)
profile
이것저것 관심많은 개발자.

0개의 댓글