ABOUT ME

Paragon의 Cave 블로그~

Today
Yesterday
Total
  • [Spring] Annotation
    Spring 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
Designed by Tistory.