-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Labels
refactor유지보수를 위한 리팩토링유지보수를 위한 리팩토링
Description
Description
현재 뱃지 순서 변경 과정을 그림으로 표현하면 다음과 같다.
클라이언트가 뱃지고유번호를 변경한 순서대로 나열한 문자열("3, 2, 1, 4" )과 함께 /app/ajax/collect/updateOrder/ 요청을 보내면 DispatcherServlet은 이 요청을 받아 CollectController가 요청을 처리하도록 보낸다. 그러면 CollectController는 Service, Dao를 거쳐 DB에 있는 유저-뱃지(usr_bdg) 테이블에 있는 순서 컬럼을 변경한다.
CollectController
@Controller("ajax.collectController")
@RequestMapping("/ajax/collect")
public class CollectController {
@Autowired CollectService collectService;
@PostMapping("updateOrder")
public String updateOrder(String order, HttpSession session, HttpServletRequest request) throws Exception {
String[] orders = order.split(",");
List<Collect> collects = new ArrayList<>();
for (int i = 0; i < orders.length; i++) {
Collect collect = new Collect();
collect.setUser((User) session.getAttribute("loginUser"));
collect.setBadge(new Badge().setNo(Integer.parseInt(orders[i])));
collect.setOrder(i);
collects.add(collect);
}
collectService.updateAllOrder(collects);
return "redirect:" + request.getHeader("Referer");
}
}CollectService
@Service
public class DefaultCollectService implements CollectService {
CollectDao collectDao;
NotificationDao notificationDao;
//..
@Override
public void updateAllOrder(List<Collect> collects) throws Exception {
for (Collect collect : collects) {
collectDao.updateOrder(collect);
}
}
//..
}Controller에 비즈니스 로직이 있어 재사용이 어렵다. Controller는 Controller의 역할만 수행하도록 만들어줘야 한다.
Solution
재사용과 유지보수를 위해 현재 Controller에서 처리하고 있는 Business Logic을 Service Layer에서 처리하도록 변경한다.
Progress
- Controller 의 비즈니스 로직 Service로 이동
- Service의 메서드 시그너처 변경
- 테스트
Metadata
Metadata
Assignees
Labels
refactor유지보수를 위한 리팩토링유지보수를 위한 리팩토링
