[스프링] 스프링 웹 서비스 디자인 패턴
목차
1. 개요
스프링은 다양한 웹 서비스를 구축하는 데 필요한 다양한 디자인 패턴을 지원합니다. 디자인 패턴을 잘 활용하면 코드의 유지보수성을 향상시키고, 개발 속도를 높일 수 있습니다.
2. MVC 패턴
MVC(Model-View-Controller) 패턴은 스프링 웹 애플리케이션에서 데이터, UI, 비즈니스 로직을 분리하여 개발하는 패턴입니다. 이 패턴을 활용하면 코드를 관리하기 쉽고, 확장이 용이해집니다.
아래는 스프링에서 MVC 패턴을 적용한 예시 코드입니다.
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/user/{id}")
public String getUserDetails(@PathVariable String id, Model model) {
UserDetails userDetails = userService.getUserDetails(id);
model.addAttribute("userDetails", userDetails);
return "userDetailsPage";
}
}
3. Front Controller 패턴
Front Controller 패턴은 클라이언트 요청을 일관적으로 처리하기 위한 디자인 패턴입니다. 스프링은 DispatcherServlet
을 이용하여 Front Controller 패턴을 구현합니다.
아래는 DispatcherServlet
을 이용한 예시 코드입니다.
public class MyWebApplicationInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) {
// Create the 'dispatcher' servlet
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet());
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
}
}
4. Singleton 패턴
싱글톤 패턴은 애플리케이션 전역에서 단일 인스턴스를 공유하여 사용하는 디자인 패턴입니다. 스프링은 빈(Bean)을 기본적으로 싱글톤으로 관리하여, 객체의 중복 생성을 방지하고 메모리를 절약할 수 있습니다.
이를 활용한 스프링 빈 설정 코드 예시는 다음과 같습니다.
@Configuration
public class AppConfig {
@Bean
public UserService userService() {
return new UserServiceImpl();
}
}
결론
스프링은 다양한 웹 서비스 디자인 패턴을 효과적으로 지원하여, 개발자가 안정적이고 유지보수성이 높은 웹 애플리케이션을 쉽게 구축할 수 있도록 도와줍니다.
참고 자료
- 스프링 공식 문서
- “스프링 인 액션” - 크레이그 월즈, 로브 할던 저, 한빛미디어 출판사, 2018