[Spring Boot] @annotation 웹 개발 하면서 사용한 어노테이션 모음1
@SpringBootApplication
해당 클래스가 스프링 부트를 설정하는 클래스임을 의미한다.
스프링은 이 클래스가 있는 패키지를 베이스 패키지로 간주한다.
베이스 패키지와 하위 패키지에서 자바 빈을 찾아 ApplicationContext에 등록한다.
@ComponentScan을 포함한다.
@Autowired
자동으로 다른 오브젝트를 찾아 연결해준다.
@Component
이 오브젝트를 스프링에 빈으로 등록할 수 있다.
@Controller, @Service, @Repository 내부에는 전부 이 어노테이션이 달려있다.
@Bean
스프링이 자동으로 오브젝트 찾아 생성하게 하고싶지않을 때 사용.
메소드 앞에 붙임.
스프링에게 이 오브젝트를 어떻게 생성해야 하는지, 매개변수를 어떻게 넣어줘야 하는지 알려준다.
@Service
자바빈
@RestController
JSON을 리턴하는 웹 서비스임을 명시.
웹에서 오는 요청을 처리해준다.
@Component 가지고있다 => 자바 빈 이고 스프링이 관리한다.
크게 @Controller와 @ResponseBody로 이루어져있다
- @ResponseBody : 이 클래스의 메서드가 리턴하는 것은 웹 서비스의 ResponseBody 이다.
@RequestMapping("url")
url을 지정해준다.리소스
클래스, 메소드 맵핑
@GetMapping
get메서드로 요청하면 여기에 연결된 컨트롤러가 실행된다.
URL경로 지정 가능.
메소드만 맵핑
@Builder
오브젝트 생성 디자인 패턴 중 하나. Builder 클래스를 따로 개발하지 않아도된다.
@NoArgsConstructor
매개변수 없는 생성자 구현
@AllArgsConstructor
클래스의 모든 멤버변수를 매개변수로 받는 생성자 구현
@Data
Getter/Setter 메서드 구현
@PathVariable
URL의 경로에 넘어오는 값을 변수로 받을 수 있게 해준다.
@RequestParam
URL의 경로에 넘어오는 값을 변수로 받을 수 있게 해준다. @PathVariable과 차이는 @PathVariable은 값 하나만 전달 할 수있고 RequestParam은 쿼리스트링 등 여러 데이터 받아올 때 사용한다.
@RequestBody
매개변수를 넘어받는 방법 중 하나.
반환할 리소스가 복잡할 때 사용. (String이나 int같은 기본자료형이 아닌 오브젝트 처럼 복잡한 자료형 통째로 보낼 때 사용) ex) 회원가입 정보 입력
@Service
스테레오타입 어노테이션.
이 클래스는 스프링 컴포넌트이며 기능적으로는 비즈니스 로직을 수행하는 서비스 레이어임을 알려준다.
@Component 가지고있다 => 자바 빈 이고 스프링이 관리한다.
@Autowired
스스로 빈 찾아 인스턴스 멤버변수에 연결해준다.
어떤 컨트롤러를 초기화하면 스프링이 알아서 멤버변수에 해당된 클래스(?)를 초기화 또는 검색해서 가져온다.
@Entity
entity로 지정하기 위해 사용. Entity 이름을 붕여할 땐 뒤에 매개변수를 넣어준다.
이름을 지정하지 않는 경우 클래스 이름을 테이블 이름으로 간주.
@Table
테이블 이름을 지정할 때 사용. 만약 @table을 추가하지 않거나 추가해도 이름을 명시하지 않으면 @entity의 이름을 테이블 이름으로 간두한다.
@Id
기본키가 될 필드 지정
@GeneratedValue
Id 필드를 자동 생성해준다.
@GenericGenerator
@GeneratedValue가 참조하는 어노테이션.
어떻게 id를 생성할지 지정한다.
hibernate에서 제공하는 기본generator이 아닌 나만의 generator을 사용하고 싶을때 사용.
@Slf4j
로그 라이브러리. 로깅할 클래스에 추가하면된다.