이번에는 앞의 DB Connection Pool과 병행하여, 설정이 잘 되었는지 기본 테스트를 진행해 보겠습니다. 가장 기본적인 API형태의 시작이며, 대부분 이 구조의 확장이나 기능의 추가라고 보시면 됩니다. 우선 이전 블로그에서 MVC를 설명하면서 폴더 구조를 봤었는데, 거기에 실질적으로 들어갈 파일을 생성해 줍니다.
2019/11/08 - [SpringBoot] - [Spring Boot] 03. MVC 구조
생성하는 파일의 종류와 모두 추가했을때, 구조는 아래와 같습니다.
- UserController.java / UserService.java / UserMapper.java / UserMapper.xml / UserDTO.java
그럼 각 단계별로 작성되는 내용과 결과적인 모습을 확인해 보겠습니다.
1. UserController.java (Controller)
Annotation 추가 - @RestController / @RequestMapping
. Class위에 작성되는 RequestMapping은 사용자가 브라우저에서 작성하는 URL의 주소이후 Top
Level 로 보시면 됩니다. (ex. http://localhost:8080/user)
- @Autowired
. Class내에 작성되는 해당 Annotation은 MVC구조상 의존성이 있는 객체인 Service에 해당하는
클래스를 자동으로 추가해주는 역할을 합니다.
- @RequestMapping
. Class내에 작성되는 RequestMapping은 Top Level뒤에 하위 URL로 생각하시면 되고,
GET / POST / PUT등 RequestMethod를 지정하게 됩니다.
그 이하 Select에 대한 method는 나중에 Controller에 대한 세부 브로그에 작성하도록 하겠습니다. 우선은 기본 구조만 확인해보고 따라하는 정도가 적당할 것 같습니다.
@RestController
@RequestMapping(value = "/user")
public class UserController {
@Autowired
UserService userService;
@RequestMapping(value = "select", method = RequestMethod.GET)
public ResponseEntity<ArrayList<UserDTO>> selectUser(){
return ResponseEntity.ok(userService.selectUser());
}
}
2. UserService.java (Service)
Annotation 추가 - @Service / @Transaction
. 서비스의 기본 Annotation을 추가해줍니다.
- @Autowired
. Class내에 작성되는 해당 Annotation은 MVC구조상 의존성이 있는 객체인 Mapper에 해당하는
클래스를 자동으로 추가해주는 역할을 합니다.
현재는 따로 처리할 비즈니스 로직이 없기때문에, 그냥 Mapper를 통해서 받아온 값을 controller에 return해주기만 해줍니다.
@Service
@Transactional
public class UserService {
@Autowired
UserMapper userMapper;
public ArrayList<UserDTO> selectUser() {
return userMapper.selectUser();
}
}
3. UserMapper.java (Mapper Interface)
우선 Class로 생성하지 않고, Interface로 생성해줍니다.
Annotation 추가 - @Mapper
. 서비스의 기본 Annotation을 추가해줍니다.
@Mapper
public interface UserMapper {
ArrayList<UserDTO> selectUser();
}
4. UserMapper.xml (Mapper xml)
xml문서 기본 작성 - xml version과 encoding, DOCTYPE 부문
xml과 매핑되는 mapper.java의 namespace 작성 - "com.example.ayoteralab.main.mapper.UserMapper"
SQL Query 작성
- id는 mapper.java의 method명과 동일하게 하며, resultType은 DTO위치와 이름을 명기함
- 실질적인 Query를 작성
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.ayoteralab.main.mapper.UserMapper">
<select id="selectUser" resultType="com.example.ayoteralab.main.dto.UserDTO">
<![CDATA[
SELECT
*
FROM USER
]]>
</select>
</mapper>
5. 결과 확인
정상적으로 DB의 User table의 전체 리스트를 받아왔습니다.
이제 기본적인 Rest API를 위한 Spring Boot의 기본적인 준비가 되었습니다. 이제 다음 블로그 부터는 세부적인 내용으로 작성해 보겠습니다.
-Ayotera Lab-
댓글