DAY60 - 기타 어노테이션, Lombok

은나현·2023년 4월 20일
0

📌 1. 초기화, 소멸

📍 1-1. @PostConstruct

  • @PostConstruct 어노테이션은 객체 생성 후 별도의 초기화 작업을 위해 실행하는 메소드를 선언하는 데 사용한다.
    • WAS가 띄워질 때 실행된다.
      		@PostConstruct
      		public void init() {
      			System.out.println("초기화 메서드");
      		}

📍 1-2. @PreDestroy

  • @PreDestroy 어노테이션은 스프링 컨테이너에서 객체(빈)를 제거하기 전에 해야 할 작업을 선언하는 데 사용한다.
    • 마지막 소멸 단계에서 실행된다.
      			@PreDestroy
      			public void destroy() {
      				System.out.println("종료 메서드 호출");
      			}

📌 2. @ModelAttribute

  • @ModelAttribute 어노테이션은 DTO 객체 처리에서의 상당 부분을 생략하게 해 준다.
    • 파라미터를 직접 가져와 DTO에 담고 처리한 후 리턴하는 기본적인 방식은 다음과 같다.
      	public String save(Model model, @RequestParam String itemName, 
      			@RequestParam Integer price, @RequestParam Integer quantity) {
      		Item item = new Item(itemName, price, quantity);
      		itemRepository.save(item);
      		model.addAttribute("item",item);
      		return "basic/item";
      	}

📍 2-1. 요청 파라미터 처리

  • @ModelAttribute 어노테이션은 지정 타입의 객체를 생성하고, 요청 파라미터의 값을 프로퍼티 접근법(setter)으로 자동 입력해 준다.
    	public String save(@ModelAttribute("item")Item item) {
    		itemRepository.save(item);
    		model.addAttribute("item",item);
    		return "basic/item";
    	}

📍 2-2. Model 추가

  • 모델에 @ModelAttribute로 지정한 객체를 자동으로 저장해 준다.
    • addAttribute() 가 하던 기능을 생략할 수 있다.
      	public String save(@ModelAttribute Item item) {
      		itemRepository.save(item);
      		return "basic/item";
      	}
    • @ModelAttribute("name")에서 이름 값은 생략이 가능한데, 생략 시 생성하는 객체 이름에서 첫글자만 소문자로 변환된 값이 name이 되어 키 값으로 모델에 등록된다.
  • @ModelAttribute 자체도 생략이 가능하지만, 직관성이 떨어질 수 있어 목적에 따라 선택해야 한다.

📌 3. Lombok

  • Lombok은 getter, setter, constructor 등 반복적으로 자주 사용되는 코드를 어노테이션으로 자동화하여 사용할 수 있게 해 주는 라이브러리이다.

📍 3-1. Lombok 설정법

  • build.gradle > dependencies 에 롬복 의존성을 추가한다.
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
  • 외부 의존 라이브러리 목록에서 롬복 jar 파일 경로를 확인한 뒤 cmd창을 이용해 진입한다.

  • 해당 경로에서 dir 명령어로 jar파일을 확인한 뒤 java -jar 파일명 명령어로 실행한다.
  • 롬복 인스톨러가 실행되면 Specify location에서 sts exe파일의 경로를 찾아 준 뒤 설치를 완료하고 sts를 재실행한다.

📍 3-2. 자주 사용하는 Lombok 어노테이션

  • @Getter, @Setter : 클래스 상단에 정의하면 소스 제너레이터를 통해 각 변수에 getter/setter을 따로 생성하는 과정을 생략하고 동일하게 사용할 수 있다.
  • @ToString : toString 메서드를 자동 생성한다.
  • @RequiredArgsConstructor : final로 선언된 멤버 변수만 사용하는 생성자를 자동으로 만들어 준다. 생성자를 통한 의존성 주입에 사용할 수 있다.
  • @NoArgsConstructor : 매개변수 없는 기본 생성자를 만들어 준다.
  • @AllArgsConstructor : 모든 변수를 포함하는 생성자를 만들어 준다.
  • @NonNull : 생성자 매개변수에 사용하면 null check를 해 준다.

➕ 스프링 경로

  • 스프링에서의 최상위 경로는 static 폴더로 지정되어 있다.
    • / : 최상위 루트 경로
    • ./ : 현재 위치 폴더
    • ../ : 현재 위치에서의 상위 폴더

0개의 댓글