작성일
2023.07.03
@SpringBootApplication
: 스프링 부트 사용에 필요한 기본 설정을 하며, 아래와 같은 애너테이션들을 포함하는 애너테이션이다.
@SpringBootConfiguration
: 스프링 부트 관련 설정을 나타내는 애너테이션으로, 스프링 부트 개발자가 직접 다룰 일은 없다고 해도 무방하다고 한다.
@ComponentScan
: 사용자가 등록한 빈을 읽고 등록하는 애너테이션으로, @Component라는 애너테이션을 가진 클래스들을 찾아 빈으로 등록해준다.
@EnableAutoConfiguration
: 스프링 부트 서버가 실행될 때 메타 파일을 읽고 정의된 설정들을 자동으로 구성해주는 역할을 한다. 즉, spring.factories 파일 클래스들이 이 애너테이션에 의해 설정되는 것이다.
@Autowired
: 타입에 맞는 Bean을 주입해주는 애너테이션@RestController
= @Controller
+ @ResponseBody
: 라우터 역할을 하는 애너테이션으로, 클라이언트의 요청에 맞는 메서드를 실행할 수 있게 하는 즉, 매핑할 수 있게하는 애너테이션이다.
CF. 라우터 : HTTP 요청과 메서드를 연결하는 장치
@Controller
= @Component
+ @Target(ElementType.TYPE)
+ · · ·
: @Component 즉, 해당 클래스를 빈으로 등록해주는 애너테이션이 걸려있기 때문에 @Controller 애너테이션만 붙여주면 되는 것이다.
@DisplayName("더하기 테스트")
: 테스트 이름
@Test
: 테스트 방식을 구분할 수 있는 애너테이션으로, 메서드를 호출할 때마다 새 인스턴스를 생상하여 독립 테스트가 가능하다.
@BeforeAll
: 전체 테스트를 시작하기 전에 한번 실행하라는 의미로, 메서드이 static으로 선언되어 있어야 한다.
@BeforeEach
: 테스트 케이스를 시작하기 전마다 실행하라는 의미
@AfterAll
: 전체 테스트를 마치고 종료하기 전에 한번 실행하므로, 메서드이 static으로 선언되어 있어야 한다.
@AfterEach
: 테스트 케이스를 종료하기 전마다 실행하라는 의미
클래스 용도에 따라 다른 애너테이션을 사용하기는 하지만, 사실 내부 코드를 보면 @Component 애네터이션이 모두 달려 있다.
클래스를 빈으로 등록하기만 해주면 될 때 사용하는 애너테이션
클래스를 설정 파일을 등록하면서 빈으로 등록해줄 때 사용하는 애너테이션
클래스를 ORM 매핑을 하면서 빈으로 등록해줄 때 사용하는 애너테이션
클래스를 라우터로 만들어주면서 빈으로 등록해줄 때 사용하는 애너테이션이다.
예를 들어 아래와 같은 코드가 있다고 가졍해보자.
@GetMapping("/test")
public String test() {
return "Hello, world!";
}
/test라는 GET 요청이 왔을 때
클래스가 비즈니스 로직을 담당하게 하면서 빈으로 등록시킬 때 사용하는 애너테이션