[인프런 워밍업 클럽 0기] BE 1일차 과제
어노테이션을 사용하는 이유 (효과) 는 무엇일까?
간결성 및 가독성 향상: 어노테이션을 사용하면 XML 구성 파일에 비해 코드가 간결해지고 가독성이 향상됨(설정 정보가 코드에 직접 포함되어 있기 때문에 빠르게 파악 가능)
코드의 모듈화: 어노테이션을 사용하면 특정 기능이나 역할을 수행하는 코드를 모듈화할 수 있다.
@Controller
,@Service
,@Repository
와 같은 어노테이션을 사용하여 각각의 역할을 하는 컴포넌트를 명확히 구분 가능
의존성 주입 및 스프링 빈 설정:
@Autowired
나@ComponentScan
과 같은 어노테이션을 사용하여 의존성 주입(Dependency Injection)을 간단하게 설정 가능. 이로써 개발자는 더 적은 코드로 높은 수준의 추상화를 이용.AOP(Aspect-Oriented Programming) 지원: Spring은 AOP를 효과적으로 지원.
어노테이션을 사용하여 메소드나 클래스에 특정 기능(로깅, 트랜잭션 처리 등)을 적용 가능.RESTful 웹 서비스 개발: Spring MVC에서
@RequestMapping
,@GetMapping
,@PostMapping
과 같은 어노테이션을 사용하여 간단하게 RESTful 웹 서비스를 구축 가능.검증(Validation):
@Valid
어노테이션을 사용하여 입력 값의 유효성을 검증.이벤트 처리: Spring에서는 이벤트 기반 프로그래밍을 지원하며,
@EventListener
와 같은 어노테이션을 통해 이벤트를 처리.테스트 용이성: 어노테이션을 사용하면 테스트 코드를 작성하거나 모의 객체(Mock Objects)를 사용하기가 훨씬 용이해짐.
이러한 이유들로 인해 Spring 어플리케이션 개발에서는 어노테이션을 적극적으로 사용하게 되며, 이는 개발 생산성과 코드의 가독성, 유지보수성을 향상시키는 데 기여함.
주석(//)과 어노테이션(@)의 차이
주석
// 이 메서드는 두 수를 더하는 기능을 수행합니다.
public int add(int a, int b) {
return a + b;
}
어노테이션
@Service // 클래스에 @Service 어노테이션을 붙여서 Spring이 이 클래스를 빈으로 등록하도록 지시함 public class MyService { // ... }
어노테이션은 주석과 유사하게 코드에 부가적인 정보를 제공하지만, 주석과 달리 런타임에 코드에 대한 메타데이터로 활용.
주로 프레임워크나 라이브러리에서 사용되며, 컴파일러나 런타임 시에 어떤 특별한 작업을 수행하도록 지시할 때 활용.
나만의 어노테이션은 어떻게 만들 수 있을까?
어노테이션 정의: 나만의 어노테이션을 만들려면 우선, Java의 어노테이션을 정의하는 인터페이스를 작성해야 함.
Java의 어노테이션은@interface
키워드를 사용하여 정의됨.
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME) // 어노테이션 정보를 유지하는 기간 (런타임까지 유지)
@Target(ElementType.METHOD) // 어노테이션을 어디에 적용할 수 있는지 지정 (메소드에 적용)
public @interface MyCustomAnnotation {
// 어노테이션 멤버 정의
String value() default ""; // 기본값을 설정할 수 있는 멤버
int priority() default 0;
}
어노테이션 사용하기:
myMethod()
메소드에@MyCustomAnnotation
어노테이션을 적용하여 컴파일된 클래스 파일을 사용할 때 리플렉션을 이용하여 어노테이션 정보를 읽을 수 있다.
public class MyClass {
@MyCustomAnnotation(value = "Custom Annotation Example", priority = 1)
public void myMethod() {
// 메소드 내용
}
}