@Controller
: Presentatiton Layer
: 요청과 응답을 처리해주는 클래스
@Service
: Service Layer
: 비즈니스 로직을 담당하는 클래스
@Repository
: Persistence Layer
: DB에 액세스하는 클래스에 사용
@RestController
: @Controller + @ResponseBody
: 메서드의 반환 결과를 JSON 형태로 반환
@RequestMapping
: 요청 URL을 어떤 메서드가 처리할 것인지 매핑
@Bean
: 개발자가 직접 제어 불가능한 외부 라이브러리를 Bean으로 등록하기 위해 사용
@Component
: 개발자가 직접 작성한 클래스를 Bean으로 등록하기 위해 사용
@Autowired
: 생성자나 setter 메서드없이 의존성을 주입해 자동으로 객체 생성
@Configuration
: 해당클래스가 환경설정 관련 파일
: 해당 클래스에 정의된 @Bean이 적용된 메서드는 @Autowired를 통해 부를 수 있음
@ConfigurationProperties
: 프로퍼티 파일을 읽어와서 해당 값을 사용할 수 있게 만듬
@Transactional
: 해당 클래스 또는 메서드에 트랜잭션 적용
: DB에 액세스하는 여러 연산들을 하나의 트랜잭션으로 처리해 오류가 발생하면 자동으로 롤백
: 보통 Service
@ExceptionHandler
: 컨트롤러단에서 발생하는 예외를 잡아서 처리해주는 메서드에 사용(컨트롤러 메서드에 사용하는 어노테이션)
: 어노테이션 인자로 전달된 에외를 처리
@ControllerAdvice
: @Controller나 @RestController에서 발생한 예외를 한 곳에서 처리할 수 있도록 도와주는 어노테이션
: 컨트롤러를 보조하는 클래스에 사용하는 어노테이션
: 컨트롤러에서 쓰이는 공통기능들을 모듈화하여 전역으로 사용
: 전역에서 발생하는 예외들을 잡아 처리해주는 클래스
@SpringBootApplication
: @Configuration, @EnableAutoConfiguration, @ComponentScan 어노테이션이 뭉침
- EnableAutoConfiguration
: auto configuration 기능 사용
@Builder
: 모델 객체를 생성할 때 Builder를 자동으로 추가
: @Builder를 사용한 경우 build()시 설정하지 않으면 0/null/false가 됨
-> @Builder.Default : 디폴트값 지정(각 멤버변수)