/Annotation-Cheet-Sheet

어노테이션 모음 (Ctrl + F로 검색)

Annotation-Cheet-Sheet

어노테이션 모음 (Ctrl + F로 검색 사전순 나열)


@AllArgsConstructor
  • 사용되는 모든 필드 값을 파라미터로 받는 생성자를 만듭니다.
public class User {
    
    private String id;
    
    private String name;
    
    @NonNull
    private String pw;
    
    private final int age;
}
User user = new User("fourThree", "유저", "passW0rd", 15); // @AllArgsConstructor
@GetMapping
  • Get 메서드 요청을 메서드에 맵핑(@RequestMapping) 해줍니다.
    • "기본 값은 없음이며 값을 넣을경우 해당 url 경로에 매핑해줍니다."
@RestController
@RequestMapping("/")
public class Controller {

    @GetMapping("/getParameter")    
    public String getParameter(@RequestParam String name) {
        return name;
    }
    
}
@RequiredArgsConstructor
  • final 키워드가 붙은 변수나 @NonNull인 필드 값만 파라미터로 받는 생성자를 만듭니다.
public class User {
    
    private String id;
    
    private String name;
    
    @NonNull
    private String pw;
    
    private final int age;
}
User user = new User("passW0rd", 15); // @RequiredArgsConstructor

public class UserController {
    private final UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }
    
}
// 위 아래의 코드는 같은 의미를 내포합니다.
@RequiredArgsConstructor
public class UserController {

    private final UserService userService;
    
}
@Component - @Component는 개발자가 직접 작성한 Class를 Bean으로 등록함으로써 **Application Context**에서 해당 클래스를 빈으로 자동 감지 및 등록하게 도와주는 Annotation 입니다.
스프링 컨테이너에 스프링 Bean으로 등록되면 해당 클래스는 IoC 컨테이너가 싱글톤으로 관리합니다.

Service 클래스가 아닌 직접 작성한 클래스(설정 파일 등)을 Bean으로 등록할 때 사용합니다.
@Component
public class UserService {
    // Class implementation
}   
@toString
  • 객체 상태에 대한 관련 정보를 문자열로 출력하여 볼 수 있게 해주는 어노테이션 입니다.
public class Person {
    private String name;
    private int age;

    // Constructor and other methods omitted for brevity

    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }
}

다음과 같이 toString 메소드를 override 하여 현재 객체에 대한 상태를 보여줄 수 있지만

@toString 어노테이션을 사용하면 자동으로 override 되어 사용할 수 있습니다.

@Service
  • @Component과 같은 맥락이며 스프링 컨텍스트에 bean으로 등록하는 어노테이션입니다.

    스프링 컨테이너에 스프링 Bean으로 등록되면 해당 클래스는 IoC 컨테이너가 싱글톤으로 관리합니다.

    보통 비즈니스 로직이나 respository layer 호출하는 Service 클래스에 사용됩니다.

@Service
public class UserService {
    // Class implementation
}
@NoArgsConstructor
  • 파라미터가 없는 기본 생성자를 만듭니다.
public class User {
    
    private String id;
    
    private String name;
    
    @NonNull
    private String pw;
    
    private final int age;
}
User user = new User(); // @NoArgsConstructor
@EqualsAndHashCode
  • Equals() HashCode() 메서드를 자동으로 생성하여 클래스에 추가합니다.
@EqualsAndHashCode
public class Person {
    private String name;
    private int age;

    //equals 두 객체가 같은지 비교
    //hashCode 해시 코드를 반환
}

위 어노테이션은 아래와 같은 메서드를 생성합니다.

public class Person {
    private String name;
    private int age;

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        
        Person person = (Person) obj;
        return age == person.age && (name == null ? person.name == null : name.equals(person.name));
    }

    @Override
    public int hashCode() {
        int result = 17;
        result = 31 * result + age;
        result = 31 * result + (name != null ? name.hashCode() : 0);
        return result;
    }
}