MVC — 왜 분업하나 / 약 15분
「한 덩어리 코드」와 「분업된 코드」를 모두 짜보고, 왜 분업이 유연성을 만드는지 손으로 느낍니다.
@Controller
public class BadController {
@RequestMapping("/bad")
public String all(Model m) {
// DB 직접 접근, 비즈니스 로직, 화면 데이터 가공
// 모두 여기에...
Connection c = ...;
ResultSet rs = ...;
// 길고 복잡
m.addAttribute("data", processed);
return "bad";
}
}
@Repository // DB 접근만
public interface DataMapper { List- findAll(); }
@Service // 비즈니스 로직만
public class DataService {
@Autowired DataMapper mapper;
public List
- getData() {
return mapper.findAll().stream()
.filter(i -> i.isValid())
.toList();
}
}
@Controller // 요청 처리만
public class GoodController {
@Autowired DataService service;
@RequestMapping("/good")
public String list(Model m) {
m.addAttribute("data", service.getData());
return "good";
}
}
"기존 테이블을 카드 형태 UI 로 변경" 요청이 왔을 때: