[Spring Boot] Annotation

김토리·2024년 9월 5일

@Autowired:의존성 주입(Dependency Injection)기능을 지원하며 스프링이 자동으로 필요한 의존성을 주입하여 객체간의 관계를 설정.따라서 개발자는 의존성을 직접 주입하거나 관리할 필요가 없음-객체 간의 관계를 효율적으로 구성

빈이 등록되었다면 컨트롤러, DAO 등의 구현 클래스에서 해당 객체가 필요할 때 이를 통해 객체를 참조할 수 있다. 이때 필요한 객체를 오토와이어링하는 방법은 필드, 생성자, setter 주입 세 가지 유형이 있다.
따라서 필요한 의존 객체의 "타입"에 해당하는 빈을 찾아 주입한다.
Autowired는 기본값이 true이기 때문에 의존성 주입을 할 대상을 찾지 못한다면 애플리케이션 구동에 실패한다.

@GetMapping : HTTP Get Method에 해당하는 단축 표현으로 서버의 리소스를 조회할 때 사용한다.

@PostMapping:POST는 HTML에서

태그를 사용하거나, ajax(비동기)에서 검색을 할 때 사용된다. 이러한 방식들은 주로 검색 파라미터가 많은 경우이기 때문에 멀티 파라미터로 받아야 한다. 그러나 getMethod와 같이 SearchParam으로 받으면 안 되고 @RequestBody로 받겠다고 선언을 해야한다. 이는 http 통신을 할 때 post의 body에 데이터를 넣어서 보내겠다라는 의미로, RequestBody에 SearchParam 값들을 매칭시켜서 달라는 의미이다.즉,HTTP Post Method에 해당하는 단축 표현으로 서버에 리소스를 등록 또는 저장할 때 사용한다.

@RequestParam : 스프링 부트 3.2.x 부터 매개변수의 이름을 인식하지 못하는 문제가 있기때문에 사용되는 어노테이션.나는 아래와 같은 에러를 겪었다 .

[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalArgumentException: Name for argument of type [java.lang.Integer] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag.] with root cause

또한, 자바 컴파일러 설정에서 -parameters 옵션을 넣어주어야 어노테이션의 이름을 생략할 수 있다.

profile
웹 개발하며 데이터 분석, AI 공부하는 jinveloper

0개의 댓글