이번주는 시험기간이어서 자율 학습 기간이다.
평소에 헷갈렸던 어노테이션에 대해 작성할 예정이다.
어노테이션이란?
주석이라는 의미로, 특별한 의미, 기능을 수행하도록 하는 기술이다.
" 프로그램에 추가적인 정보를 제공해주는 메타데이터"
어노테이션이 하는 역할
- 컴파일러에게 코드 작성, 문법 에러를 체크하도록 정보 제공
- 소프트웨어 개발 툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공
- 실행시 특정 기능을 실행하도록 정보 제공
스프링 어노테이션
@SpringBootApplication
@Configuration + @EnableAutoConfiguration + @ComponentScan
@Configuration
클래스에 적용하고 @Bean을 해당 Class의 method에 적용하면 @Autowired로 Bean을 부를 수 있다.
@EnableAutoConfiguration
Spring Application Context를 만들때 자동으로 설정하는 기능을 켠다. classpath의 내용에 기반해서 자동 생성된다.
@ConfigurationProperties
yaml파일을 읽는다.
@ComponentScan
Spring Framework는 @Component, @Service, @Repository, @Controller, @Configuration 중 1개라도 등록된 클래스를 찾으면, Context에 bean으로 등록한다.
@Component
개발자가 생성한 Class를 Spring의 Bean으로 등록할 때 사용하는 Annotation
해당 어노테이션을 보고 스프링의 빈으로 등록한다.
@Bean
개발자가 직접 제어가 불가능한 외부 라이브러리 등을 Bean으로 만드려고 할때 사용되는 Annotation이다.
@Controller
Spring에게 해당 Class가 Controller의 역할을 한다고 명시하기 위해 사용하는 Annotation
@Service
Spring에게 해당 Class가 Service의 역할을 한다고 명시하기 위해 사용하는 Annotation
@Component 어노테이션과 거의 차이가 없지만 비즈니스 로직을 수행하는 서비스 레이어 클래스 임을 나타낸다.
@Repository
@Import
@Autowired
🪿 스프링에서 의존성 주입 방법
1. 생성자 주입
2. 수정자 주입
3. 필드 주입
@ModelAttribute
@ModenAttribute 의 경우에는 json을 받아 처리할 수 없다.
@PropertySource
해당 프로퍼티 파일을 Environment로 로딩하게 한다.
@RestController
@Controller + @ResponseBody
view가 필요없는 API만 지원하는 서비스에서 사용한다. data return이 주 목적이다.
Spring 4.0.1부터 제공되었다.
@ResponseBody
해당 응답 객체를 클라이언트가 요구하는 요청 내용 유형(Content-Type)에 따라 응답하도록 도와주는 어노테이션이다.
보통은 Jackson 모듈에 의해 json 유형으로 응답해준다.
클라이언트가 xml 응답을 요청하면 xml 응답을 해주기도 하고, 경우에 따라 응답 유형을 mimeType 에 따라 설정할 수 있다.
@Required
Setter 메서드에 적용시 Bean 생성시에 필수 프로퍼티임을 알린다.
@PostConstruct, @PreConstruct
의존 객체를 생성한 후 초기화 작업을 위해 객체 생성 전/후에 실행해야할 메서드 앞에 붙인다.
@PreDestroy
객체를 제거하기 전에 해야할 작업을 수행하기 위해 사용한다.
@Qualifier
같은 타입의 빈이 두 개 이상 존재하는 경우 스프링이 어떤 빈을 주입해야할지 알 수 없어서 스프링 컨테이너를 초기화하는 과정에서 예외가 발생한다.
이 경우 @Qualifier를 @Autowired와 함께 사용하여 어떤 Bean을 사용할지 지정한다.
@Lazy
지연 로딩을 지원한다. Class가 로딩될때 스프링에서 바로 빈 등록을 마치는 것이 아닌 실제로 사용될때 로딩이 이뤄지게 하는 방법이다.
@Value
properties에서 값을 가져와 적용시에 사용한다.
@PathVariable
동적 라우팅 구성 시 동적 라우팅에 대한 바인딩 값을 가져오는 인자 어노테이션이다.
계속 추가할 예정..
참고자료
https://www.jrebel.com/blog/spring-annotations-cheat-sheet
https://melonicedlatte.com/2021/07/18/182600.html
https://cheershennah.tistory.com/228
https://velog.io/@gillog/Spring-Annotation-%EC%A0%95%EB%A6%AC
https://dev.to/composite/-40c0
'Spring > 카테캠 - TIL' 카테고리의 다른 글
URL vs URI vs URN (0) | 2023.06.28 |
---|---|
TIL [0626] - 클론 코딩 1주차 (0) | 2023.06.26 |
TIL [0605-0611]: 페이지네이션, 타임라인, 트랜잭션, 동시성 제어 (0) | 2023.06.09 |
TIL [0531 - 0604] : 대용량 처리를 위한 MySQL 이해 (0) | 2023.06.03 |
TIL [0526-0528] Spring MVC 4 (5) | 2023.05.28 |