어노테이션은 소스코드에 @어노테이션
의 형태로 표현되며, 클래스, 필드, 메소드 선언부에 적용하여 특정 기능을 부여하는 표현법을 말한다. 어노테이션을 통해 XML 환경 설정이 필요 없이 자바 파일 내에서 설정 작업을 할 수 있게 되어, 설정 파일에서 발생하는 오류를 최소화할 수 있다.
어노테이션을 사용하면 소스 코드에 메타데이터를 저장할 수 있으며, 컴파일 타임 체크뿐 아니라 어노테이션 API를 통해 코드 가독성을 높여준다.
@Controller
: dispatcher-servlet.xml
에서 bean
태그로 정의하는 것과 동일한 역할을 한다.@RequestMapping
: 특정 메소드에서 요청되는 URL과 매핑시켜주는 어노테이션이다.@Autowired
: 스프링이 의존성을 자동으로 주입하도록 설정한다.@Service
: 비즈니스 로직을 처리하는 서비스 클래스에 적용하는 어노테이션이다.@Repository
: DAO(Data Access Object) 클래스를 스프링에 등록할 때 사용하는 어노테이션이다.다음 예제에서는 @Controller
, @RequestMapping
, @Autowired
, @Service
, @Repository
어노테이션을 사용하여 기본적인 웹 애플리케이션의 구성을 구현했다.
UserController.java
)import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@RequestMapping(value = "/user", method = RequestMethod.GET)
@ResponseBody
public String getUser() {
return userService.getUserInfo();
}
}
import org.springframework.stereotype.Service;
@Service
public class UserService {
public String getUserInfo() {
return "User information retrieved successfully";
}
}
import org.springframework.stereotype.Repository;
@Repository
public class UserRepository {
// 데이터베이스와의 연결 로직
}
어노테이션은 자바 코드 내에서 직접적으로 메타데이터를 주입하여 XML 파일에 대한 의존도를 낮추고, 코드 가독성을 높이며 설정 과정에서의 오류를 최소화하는 역할을 한다. 스프링 프레임워크에서 많이 사용하는 어노테이션들은 주요 기능들을 간결하게 구성할 수 있도록 도와주어 개발의 생산성을 높여준다.