- 스프링 프레임워크를 구성하는 모듈, 정식 명칭은 Spring Web MVC다.
- 서블릿 API를 기반으로 작성된 웹 프레임워크다.
- 프론트 컨트롤러 패턴과 MVC 아키텍처 패턴을 사용
- 유연하고 확장성이 뛰어난 구조
- 견고한 웹 애플리케이션을 만드는데 도움이 되는 풍부한 기능을 제공
- 자바 언어의 Annotation과 Reflection API를 적극 사용
- Annotation-based programming 모델을 제공
- 경량 functional programming model을 지원
- CoC(Convertion over Configuration, 설정보다 관례)를 지원 - 짧은 코드로 함축적인 프로그래밍이 가능
# Annotation-based programming
- @Controller, @RequestMapping 등 다양한 Annotation을 제공
- Annotation을 통한 요청 연결, 데이터 가공, 예외 처리 등 구성
- meta annotation을 통해 사용자 정의 애노테이션을 지원
/*
* 애노테이션으로 이 클래스가 컨트롤러 컴포넌트임을 선언한다
*/
@Controller
public class HelloController {
/*
* 애노테이션으로 웹 요청을 연결한 URL 선언
*/
@RequestMapping("/hello")
public ModelAndView hello(@RequestParam("name") String name) {
// Model 생성
HelloModel model = new HelloModel(name);
// View 생성
View view = new InternalResourceView("/WEB-INF/templates/HelloView.jsp");
// ModelAndView 생성 및 초기화
ModelAndView mav = new ModelAndView();
mav.addObject("hello", model);
mav.setView(view);
return mav;
}
}
# Reflection API
- 클래스나 객체의 method, field 등의 정보를 확인 또는 이용가능한 API다.
- 객체의 생성이나 method 호출을 동적으로 할 수 있는 강력한 기법이다.
// Without reflection
Duck duck = new Duck();
duck.quack();
// With reflection
Object duckObject = Class.forName("example.spring.Reflection$Duck").newInstance();
Method quack = duckObject.getClass().getDeclaredMethod("quack", new Class<?>[0]);
quack.invoke(duckObject);
class Duck {
void quack() {
System.out.println("꽥꽥!");
}
}
'Back End > Spring' 카테고리의 다른 글
윈도우에서 내장톰캣(embed-tomcat)을 만들고 실행시 오류 (0) | 2024.03.16 |
---|---|
war방식의 단점 (0) | 2024.03.16 |
Gradle (0) | 2023.08.02 |
POJO (Plain Old Java Object) (0) | 2023.07.31 |
Spring 개요 (0) | 2023.07.31 |