Validator를 만들면서 @Component 어노테이션을 추가하는 이유가 궁금해져서 이 글을 쓰게 되었다.
먼저, Validator에 @Component 어노테이션을 추가한 이유는 Spring의 컴포넌트 스캔 메커니즘을 통해 해당 밸리데이터 클래스를 스프링 컨텍스트에서 관리하는 빈(Bean)으로 등록하기 위함이다.
이유 및 장점
1. 자동 등록 및 의존성 주입
- '@Component' 어노테이션을 사용하면 Spring이 해당 클래스를 스프링 컨택스트의 빈으로 자동으로 등록한다.
이렇게 되면 다른 빈에서 이 밸리데이터를 자동으로 주입 받을 수 있으며 명시적으로 빈을 등록하거나 주입하는 번거로움을 줄일 수 있다.
@Component
@RequiredArgsConstructor
public class NoticeValidator implements Validator {
// 필드와 메서드 정의
}
2. 관심사의 분리
- 밸리데이터 로직을 별도의 클래스로 분리하여 코드의 재사용성과 유지보수성을 높인다. 밸리데이터가 스프링 빈으로 등록되면 필요한곳에서 쉽게 사용할 수 있다.
3. AOP와 같은 기능 사용 가능
- '@Component'로 등록된 빈은 AOP(Aspect Oriented Programming) 등의 스프링 기능을 사용할 수 있다. 예를 들어, 로깅이나 트랜잭션 관리 등의 부가 기능을 쉽게 추가할 수 있다.
4. 구성 가능성
- '@Component'로 등록된 빈은 스프링의 설정 파일이나 프로파일을 통해 쉽게 구성할 수 있다. 예를 들어, 특정 환경에서만 밸리데이터를 활성화하거나 설정을 변경할 수 있다.
예시
NoticeValidator 클래스를 @Component로 등록하면, 다른 클래스에서 @Autowired 애노테이션을 사용하여 해당 밸리데이터를 주입 받을 수 있다.
@Component
@RequiredArgsConstructor
public class NoticeValidator implements Validator {
// Validator 구현
}
// 서비스나 컨트롤러 클래스에서 사용 예시
@Service
public class SomeService {
private final NoticeValidator noticeValidator;
@Autowired
public SomeService(NoticeValidator noticeValidator) {
this.noticeValidator = noticeValidator;
}
// 서비스 메서드에서 밸리데이터 사용
public void someMethod(Object target, Errors errors) {
noticeValidator.validate(target, errors);
}
}
이렇게 @Component 애노테이션을 추가하면, NoticeValidator 클래스가 스프링 빈으로 등록되어 스프링의 다양한 기능과 통합하여 사용할 수 있게 된다.
'Develop > Spring' 카테고리의 다른 글
[Spring]Filter와 Interceptor의 개념 및 차이 (0) | 2024.10.17 |
---|---|
[Spring] Validator의 주요개념과 적용 방법 (0) | 2024.10.02 |
@RequestBody와 @ModelAttribute (0) | 2024.08.01 |
RedirectAttributes란 무엇일까 (0) | 2024.07.12 |
파일 첨부 할때의 두가지 방법(파일서버 사용, 로컬경로 업로드) (0) | 2024.06.28 |