- 스프링 컴포넌트 관련
- @Component
- 스프링이 관리할 객체(Bean)라는 표시
- 개발자가 객체를 직접 생성하지 않아도, 스프링 컨테이너가 자동으로 생성하고 관리해 준다.
- 확장된 @Component 애노테이션들
- @Component
| 애노테이션 | 역할 |
| @Controller | 웹 요청 처리(HTML View 반환) |
| @RestController | REST API 요청 처리(JSON 데이터 반환) |
| @Service | 비지니스 로직을 처리 |
| @Repository | DB 접근 로직 처리 |
| @Configuration | 설정 관련 클래스 |
2. 애노테이션의 작동 방식을 이해하는 메타 애노테이션
- @Target
- 애노테이션을 적용할 위치를 제한한다.
- TYPE : 클래스 / 인터페이스 / 열거형에 적용
- METHOD : 메서드에 적용
- FIELD : 필드에 적용
- @Target(ElementType.METHOD)
- 애노테이션을 적용할 위치를 제한한다.
- @Retention
- 애노테이션이 유지되는 기간을 정의
- SOURCE : 컴파일 중에만 사용하고 사라짐
- CLASS : 클래스 파일까지 유지되지만, 런타임에는 사용 불가
- RUNTIME : 런타임에도 유지
- @Retention(TetentionPlicy.RUNTIME)
- 애노테이션이 유지되는 기간을 정의
3. 웹 요청 관련 애노테이션
- @RequestMapping, @GetMapping, @PostMapping
- @ResponseBody
- 메서드에서 반환한 데이터를 HTTP 응답 본문에 직접 넣어준다.
- @RestController는 @ResponseBody를 기본적으로 포함한다.
4. DI(의존성 주입) 관련 애노테이션
- @Autowired
- 스프링 컨테이너가 관리하는 Bean을 자동으로 주입해준다.
@Component
Public class MyService {
public String serviceName() {
return "My Service";
}
}
@Controller
public class MyController {
@Autowired
private MyService myService;
@GetMapping("/service")
public String getServiceName() {
return myService.serviceName();
}
}
- @Qualifier
- 같은 타입의 Bean이 여러개 있을 때, 특정 Bean을 선택하도록 도와준다.
@Component("serviceA")
public class ServiceA {}
@Component("serviceB")
public class ServiceB {}
@Controller
public class MyController {
@Autowired
@Qualifier("serviceB")
private ServiceB myService;
}
- @Primary
- 같은 타입의 Bean이 여러 개일 때, 기본적으로 선택될 Bean을 지정한다.
5. 기타 알아두면 좋은 애노테이션
- @Configuration & @Bean
- 스프링 설정 클래스를 정의하고, Bean을 등록한다.
- @Value
- application.properties 파일에서 값을 주입받는다.
(properties file)
my.config.value = Hello, Config!
(Java Class)
@Component
public class ConfigReader {
@Value("${my.config.value}")
private String configValue; //Hello, Config!가 담겨있다!
public String getConfigValue() {
return configValue;
}
}
'Back-End > Spring' 카테고리의 다른 글
| IOC / DI (0) | 2024.12.06 |
|---|---|
| Spring Container와 Spring Bean (0) | 2024.12.06 |
| 객체 지향 설계(SOLID 원칙) (1) | 2024.12.06 |
| Spring DI(의존성 주입)에 대해서 (1) | 2024.12.01 |
| 스프링으로 넘어 가기 전에.. (0) | 2024.11.20 |