View Resolver는 스프링 MVC에서 사용되는 핵심 기능 중 하나로, 컨트롤러가 반환한 뷰 이름을 실제 뷰 객체로 매핑하는 역할을 합니다

즉, View Resolver는 뷰의 위치를 찾아 컨트롤러에게 반환해줍니다

 

동작 방식

View Resolver는 설정된 규칙에 따라 뷰의 위치를 찾습니다

스프링에서는 다양한 View Resolver 구현체를 제공하며, 가장 일반적으로 사용되는 것은 다음과 같습니다

  • InternalResourceViewResolver
    내부 자원을 이용하여 JSP나 HTML 파일을 처리합니다
    일반적으로 웹 애플리케이션에서 사용되는 기본적인 View Resolver입니다
  • UrlBasedViewResolver
    URL 기반의 뷰를 처리하는 Resolver입니다
    주로 리다이렉션과 같은 기능을 구현할 때 사용합니다
  • XmlViewResolver
    XML 파일을 이용하여 뷰를 처리하는 Resolver입니다
    XML 파일에 정의된 뷰를 사용하여 동적으로 뷰를 생성할 수 있습니다
  • JsonViewResolver
    JSON 형식의 뷰를 처리를 Resolver입니다
    주로 AJAX 요청에 대한 응답으로 JSON 데이터를 반환할 때 사용됩니다
  • ContentNegotiatingViewResolver
    Apache Tiles와 같은 타일 시스템을 사용하여 뷰를 처리하는 Resolver입니다
    여러 개의 작은 타일로 구성된 화면을 동적으로 조합할 수 있습니다

이러한 View Resolver는 스프링의 설정 파일에 정의되어 있으며, 설정된 우선순위에 따라 뷰를 찾습니다

설정 방법

XML 설정 파일을 이용한 설정

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
</bean>

Java Config를 이용한 설정

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

장점

  • 유연한 설정
    View Resolver를 사용하면 뷰의 위치나 종류를 유연하게 변경할 수 있습니다
    설정 파일을 수정함으로써 쉽게 뷰를 변경할 수 있습니다
  • 간편한 사용
    View Resolver를 설정하면 컨트롤러에서는 뷰의 위치나 종류를 명시적으로 지정할 필요가 없습니다
    이를 통해 코드가 간결해지고 유지보수가 용이해집니다

 

어노테이션의 기본 개념

어노테이션은 자바 프로그래밍 언어의 메타데이터의 한 형태로, 프로그램에 관련된 정보를 제공한다

어노테이션은 소스 코드에 추가되어 특정 작업을 지정하거나 설명할 수 있다

주석과는 달리 컴파일러나 런타임에 의미를 전달하며, 프로그램 코드에 추가적인 정보를 제공하여 코드를 더욱 유연하고 강력하게 만든다

어노테이션의 원리

어노테이션은 `@` 기호를 사용하여 선언되며, 자바의 메타 어노테이션과 사용자 정의 어노테이션으로 나뉜다

메타 어노테이션은 다른 어노테이션을 설명하거나 제한하는데 사용되고, 사용자 정의 어노테이션은 개발자가 직접 정의하여 사용한다

 

Spring Boot에서의 어노테이션은 주로 메타 어노테이션으로, 스프링 프레임워크의 기능을 활성화하거나 구성하는 데 사용된다

Spring Boot의 어노테이션들은 스프링의 컴포넌트 스캔, 의존성 주입, 프로퍼티 로딩 등과 같은 기능을 자동으로 처리하는 역할을 한다

Spring Boot 어노테이션의 예시

  • @SpringBootApplication
    Spring Boot 애플리케이션의 진입점을 지정하고, 스프링 부트의 자동 구성을 활성화한다
  • @RestController
    RESTful 웹 서비스의 컨트롤러를 정의한다
  • @RequestMapping
    요청 URL과 컨트롤러 메서드를 매핑하여 요청을 처리한다
  • @Autowired
    의존성 주입을 자동으로 처리한다
  • @Value
    프로퍼티 값을 주입받는다

'-- Web -- > Spring & Spring Boot' 카테고리의 다른 글

[Spring] View Resolver란?  (0) 2024.04.12
[Spring] applicationContext.xml란?  (0) 2024.03.15

Spring 프레임워크에서는 `applicationContext.xml` 파일을 사용하여 애플리케이션의 설정 정보를 관리합니다

이 파일은 Spring 컨테이너가 애플리케이션의 객체들을 생성하고 관리하는 데 필요한 설정들을 정의합니다

특징

  • Bean 정의
    applicationContext.xml 파일에서는 애플리케이션에서 사용할 Bean 객체들의 정의를 할 수 있습니다
    Bean 객체들의 이름, 클래스, 의존 관계 등을 설정할 수 있습니다
  • 의존성 주입 설정
    applicationContext.xml 파일에서는 Bean들 간의 의존성을 주입하는 설정을 할 수 있습니다
    이를 통해 객체 간의 결합도를 낮추고 유연한 애플리케이션 개발이 가능합니다
  • 프로퍼티 설정
    Bean 객체들의 프로퍼티 값을 설정할 수 있습니다
    이를 통해 객체 초기화 시 필요한 값들을 외부에서 주입할 수 있습니다

장점

  • 설정의 중앙 집중화
    applicationContext.xml 파일을 통해 애플리케이션의 설정 정보를 한 곳에 집중하여 관리할 수 있습니다
    이는 애플리케이션의 유지보수성을 높여줍니다
  • 의존성 관리 용이성
    applicationContext.xml 파일에서 의존성을 관리하면 객체 간의 결합도를 낮출 수 있어 유연한 애플리케이션 구조를 유지할 수 있습니다
  • 환경에 따른 설정 분리
    applicationContext.xml 파일을 통해 환경에 따라 다른 설정을 분리하여 관리할 수 있습니다
    예를 들어 개발 환경, 테스트 환경, 운영 환경 등에 따라 다른 데이터베이스 연결 정보를 설정할 수 있습니다

단점

  • XML 기반 설정
    applicationContext.xml 파일을 XML 기반으로 작성되어야 하기 때문에 설정이 복잡해질 경우 가독성이 떨어질 수 있습니다
  • 리팩토링의 어려움
    applicationContext.xml 파일의 설정이 복잡해지면 리팩토링이 어려울 수 있습니다
    특히 큰 규모의 프로젝트에서는 설정의 관리가 어려워질 수 있습니다
  • 런타임 오류 발생 가능성
    applicationContext.xml 파일의 설정이 잘못되면 런타임 오류가 발생할 수 있습니다
    이를 방지하기 위해 설정을 신중하게 관리해야 합니다

 

+ Recent posts