스프링에서는 애너테이션을 사용함으로써 해당 클래스를 빈으로 만들어주는 기능이 있습니다.
<context:component-scan>태그인데요, 이는 해당 태그를 사용하여 패키지 이름을 지정하면, 애플리케이션 실행 시 해당 패키지에서 애너테이션으로 지정된 클래스를 빈으로 만들어줍니다.
사용방법은 아래와 같습니다.
<context:component-scan base-package="패키지이름" />
<context:component-scan>에서 제공하는 대표적인 애너테이션이 있습니다. @Controller, @Service, @Repository, @Component 이 네가지에 대해 알아보겠습니다.
애너테이션 | 기능 |
@Controller | 스프링 컨테이너가 해당 클래스를 컨트롤러 빈으로 자동 변환 |
@Service | 스프링 컨테이너가 해당 클래스를 서비스 빈으로 자동 변환 |
@Repository | 스프링 컨테이너가 해당 클래스를 DAO빈으로 자동 변환 |
@Component | 스프링 컨테이너가 해당 클래스를 빈으로 자동 변환 |
Controller 설정을 예로 들어 설명을 해보겠습니다.
<context:component-scan base-package="com.mystudy.controller" />
Controller는 servler-context.xml에 등록을 합니다. 그러므로 servlet-context.xml에 위처럼 패키지를 지정해서, 지정된 클래스를 빈으로 만들어줍니다.
해당 xml파일에 설정된 패키지에 새로운 클래스를 생성합니다. 관례적으로 Controller 패키지에는 파일끝에 Controller를 끝에 붙여줍니다.
package com.mystudy.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class TestController {
@GetMapping("/test")
public void testMethod(Model model) {
String test = "Controller 테스트";
model.addAttribute("test", test);
}
}
해당 클래스 위에 @Controller 라는 어노테이션이 있는데, 어노테이션 설정을 해야 servlet-context.xml에서 설정된 패키지에 설정된 어노테이션을 기준으로 빈이 생성됩니다.
GetMapping이라는 어노테이션이 있는데, 이는 get방식으로 요청시 해당 메서드가 호출되는 방식입니다. 자세한 내용은 따로 포스팅하겠습니다.
@GetMapping 옆에 괄호안에 "/test"라는 문자열을 볼 수 있습니다. 이는 url이 "/test"이면 GetMapping을 요청하는 방식입니다.
또한 Model이라는 인터페이스를 사용했는데, 이는 GetMapping을 통해 해당 메서드를 호출하고, 호출된 메서드의 내용을 담아 호출하려는 페이지에 전달하는 도구로 사용됩니다.
메서드의 끝에 model.addAttribute라는 메서드가 보일텐데, 이는 test라는 문자열을 "test"라는 하나의 어트리뷰트로 전송하는 역할을 합니다.
다음은 test라는 jsp 페이지를 보겠습니다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h1>Test</h1>
<h2>${test }</h2>
</body>
</html>
위의 jsp페이지는 test라는 jsp파일입니다. body태그 안에 ${test}라는 내용이 있는데, 이는 TestController파일의 testMethod입니다. model.addAttribute("test", test)가 위의 ${test}입니다. 이는 Model인터페이스로 인해 표현식을 사용 할 수 있습니다.
출력결과 확인하겠습니다.
<h2>${test}</h2>가 Controller 테스트로 출력 된 것을 확인 할 수 있습니다.
'코딩 > Spring' 카테고리의 다른 글
Spring 스프링을 사용하는 이유 (0) | 2020.08.20 |
---|---|
Spring Lombok (0) | 2020.08.18 |
Spring AOP 관점 지향 프로그래밍 Annotation (0) | 2020.08.14 |
Spring AOP 관점 지향 프로그래밍 (0) | 2020.08.13 |
Spring 의존성 주입(Dependency Injection) (0) | 2020.08.12 |
최근댓글