스프링 데이터 프로젝트는 스프링 MVC에서 사용할 수 있는 편리한 기능을 제공한다.
스프링 데이터가 제공하는 Web 확장 기능을 활성화하려면 SpringDataWebConfiguration을 스프링 빈으로 등록하면 된다.
<!--xml 설정--><bean class="org.springframework.data.web.config.SpringDataWebConfiguration" />
//javaConfig 설정@Configuration@EnableWebMvc@EnableSpringDataWebSupportpublic class WebAppConfig{...}
설정을 완료하면 도메인 클래스 컨버터와 페이징과 정렬을 위한 HandlerMethodArgumentResolver가 스프링 빈으로 등록된다.
등록되는 도메인 클래스 컨버터
org.springframework.data.repository.support.DomainClassConverter
도메인 클래스 컨버터는 HTTP 파라미터로 넘어온 엔티티의 아이디로 엔티티 객체를 찾아서 바인딩해준다.
예를 들어 회원을 수정하는 화면을 보여주려면 컨트롤러는 HTTP 요청으로 넘어온 회원의 아이디를 사용해서 리포지토리를 통해 회원 엔티티를 조회해야 한다.
예) 수정화면 요청 URL : /member/memberUpdateForm?id=1
//회원 아이디로 회원 엔티티 조회@Controllerpublic class MemberController{ @Autowired MemberRepository memberRepository; @RequestMapping("member/memberUpdateForm") public String memberUpdateForm(@RequestParam("id") Long id, Model model){ Member member = memberRepository.findOne(id); model.addAttribute("member", member); return "member/memberSaveForm"; }}
//도메인 클래스 컨버터를 적용@Controllerpublic class MemberController{ @Autowired MemberRepository memberRepository; @RequestMapping("member/memberUpdateForm") public String memberUpdateForm(@RequestParam("id") Member member, Model model){ model.addAttribute("member", member); return "member/memberSaveForm"; }}
@RequestParam("id") Member member 부분을 보면 HTTP 요청으로 회원 아이디를 받지만 도메인 클래스 컨버터가 중간에 동작해 아이디를 회원 엔티티 객체로 변환해서 넘겨준다. 따라서 컨트롤러를 단순하게 사용할 수 있다.
도메인 클래스 컨버터는 해당 엔티티와 관련된 리포지토리를 사용해서 엔티티를 찾는다. 여기서는 회원 리포지토리를 통해 회원 아이디로 회원 엔티티를 찾는다.