-
[Spring] AnnotationSpring 2025. 3. 29. 17:55
★ Annotaion( 어노테이션)
@ 기호로 시작하며, 클래스, 메서드, 변수, 매개변수, 패키지 등에 추가할 수 있다. ex)@Getter
//@Getter 사용전 클래스 public class human{ private String name; private int age; public String getName(){ return name; } public int getAge(){ return Age; } } //@Getter 사용 후 클래스 @Getter public class human{ private String name; private int age; } //Get 함수가 존재 하지 않지만 Spring에서 자동으로 만들어지고, //다른 클래스에서 Name을 받을때 human.getName()함수를 사용할수 있다.
★ 자주 사용하는 Annotation
기본으로
제공하는
Annotaion@Override
● 메서드가 상위 클래스나 인터페이스의 메서드를
오버라이드하고 있음을 나타낸다@Deprecated
● 해당 요소가 더 이상 사용되지 않음을 나타낸다.
● 해당 어노테이션이 붙은 코드를 사용하면 컴파일 경고가
발생한다.@SuppressWarnings
● 컴파일러 경고를 억제한다.Lombok
라이브러리에서
지원해주는
Annotaion@Getter 클래스의 모든 필드(속성 = 클래스 내 변수)에 대한 매서드를 자동으로 생성
ex) private Name
//@Getter, get 함수를 작성하지 않더라도 자동으로 만들어준다.
// public String getName(){
//return Name;
//}
//@Setter, set 함수를 작성하지 않더라도 자동으로 만들어준다.
public void setName(String name){
this.Name = name;
//}
@Setter @ToString 객체의 toString()메서드를 자동으로 생성
기본적으로 클래스내 필드(속성 = 클래스 내 변수)의 값을 모든 필드를 String으로 변환해준다.
특정 필드를 제외하거나 포맷을 지정 할 수도 있다.@EqualsAndHashCode equals()와 hashCode()메서드를 자동으로 생성한다.
객체의 동일성과 해시코드를 정의하는데 사용한다.@NoArgsConstructor 기본 생성자를 생성한다.
ex)
human 클래스에 이름, 나이의 필드가 존재하지만, 생성시 파라미터에 초기값을 받지 않는 객체 생성 생서자를 만든다.
human(){
}@AllArgsConstructor, 모든 필드를 매개변수로 하는 생성자
ex)
human 클래스에 이름, 나이의 필드 등 하지만, human 클래스가 가진 모든 필드의 초기값을 받도록 객체 생성 생서자를 만든다.
human (String name, int age){
this.name = name;
this.Age = age;
}@RequiredArgsConstructor 필수(final) 필드만을 매개변수로 하는 생성자를 자동으로 생성
ex)
human 클래스에 이름, 나이의 필드 등 하지만, human 클래스가 가진 모든 필드의 초기값을 받도록 객체 생성 생서자를 만든다.
human (String name, int age){
this.name = name;
this.Age = age;
}@Builder 빌더 패턴을 적용하여 객체를 생성 할수 있게 한다
복잡한 객체 생성에 유용 하며, 필드 이름을 명시적으로 지정하면서 객체를 생성 할수 있다.
ex)
//일반 JAVA Class
Human = new Human("paragon", 29);
//@bulider 사용시
Human = Human.bulider().name("jhon").age(29).bulid();@Slf4j 클래스에 로그를 남기기기 위한 logger객체를 자동으로 생성한다. @Data 테스트 용으로만 사용할뿐 실제 코드에서는 사용하지 않는다. ★ Lombok
- getter/setter 메서드, 생성자, toString 메서드 등과 같이 반복적으로 작성되는 코드를 보일러 플레이트 코드라고 하며,
- 어노테이션 기반으로 동작 Lombok은 보일러 플레이트 코드를 줄여드는 라이브러리이다.
- 주로 컴파일 시점에 소스 코드를 변환하여 필요한 메서드를 자동으로 생성 한다.
- 코드의 가독성과 유지보수성을 높여준다
★ 사용자 정의 어노테이션
- 개발자가 필요에 따라 직접 어노테이션을 정의할 수 있다.
- 사용자 정의 어노테이션은 특정 메타데이터를 추가하거나, AOP(Aspect-Oriented Programming) 같은 기술과 결합하여 다양한 기능을 구현할 수 있다. -> 심화 주차에 새로운 페이지에서 업데이 한다.
'Spring' 카테고리의 다른 글
[Spring] MVC 패턴 문제 (0) 2025.03.29 [Spring] MVC 패턴 (0) 2025.03.29 [Spring] HTTP Method 속성 (0) 2025.03.27 [Spring]HTTP MESSEGE 구조 (0) 2025.03.27 [Spring] HTTP (3) 2025.03.27