Back End/Spring

Spring MVC

DevHam94 2023. 8. 22. 13:26

- 스프링 프레임워크를 구성하는 모듈, 정식 명칭은 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