Annotation이란?
사전적 의미로는 '주석', 자바에선 특별한 의미를 담은 주석.
즉, 자바코드에 주석처럼 달아 프로그램에게 추가적인 정보를 제공해주는 메.타.데.이.터
자바나 스프링이 제공해주는 것도 있고,사용자가 직접 만들수도 있다.
어노테이션은 왜 사용하는가?
- 컴파일러에게 코드작성 문버벵러를 체크하도록 정보제공
- 빌드나 배치시 코드 자동으로 생성할 수 있도록 정보제공
- 코드실행시 특정기능을 실행할 수 있도록 정보제공
대표적인 어노테이션
1. @Component vs @Bean
@Component : 개발자가 직접 작성한 Class를 Bean으로 등록할떄 사용
컴포넌트에 대한 추가정보가 없으면 class이름을 camelCase로 변경한것이 Bean ID로 사용
@Component에 value이라는 값을 이용해서 Bean이름지정
@Component
public class Student {
public Student() {
System.out.println("hi");
}
}
@Component(value="mystudent")
public class Student {
public Student() {
System.out.println("hi");
}
}
@Bean : 개발자가 직접 제어가 불가능한 외부라이브러리 등을 Bean으로 등록할떄 사용
ArrayList같은 라이브러리등을 Bean으로 등록하기 위해서는
별도로 해당 라이브러리 객체를 반환하는 Method를 만들고 @Bean Annotation을 사용하면 된다.
@Bean에 name이라는 값을 이용해서 자신이 원하는 id로 Bean등록
@Configuration
public class ApplicationConfig {
@Bean(name="myarray")
public ArrayList<String> array(){
return new ArrayList<String>();
}
}
2. @Bean과 @Configuration
@Configuration : 1개이상의 Bean을 등록하고 있다고 명시할때 사용
즉, 해당클래스가 Bean구성 Class임을 알려준다.
그래서 @Bean을 사용하는 클래스의 경우 @Configuration과 같이 사용해야한다.
Bean등록하는 방법
1.
추가 어노테이션 종류
@Slf4j
@RequiredArgsConstuctor : 생성자 정의 안써도 댐
없으면
@Configuration
@EnableWebSocket
'🍃 Language > Java' 카테고리의 다른 글
[WebFlux] 💚 Webflux 그림으로 이해하기(Reactive프로그래밍) (0) | 2022.02.01 |
---|---|
[Spring] 어노테이션 @Autowired @PostMapping @ReqeustBody (0) | 2021.04.13 |
[Spring] Spring vs Spring boot (0) | 2021.04.08 |
[Spring] 스프링 프로젝트 디렉토리 구조(maven vs gradle) (0) | 2021.04.07 |
[Java] Spring Initializr로 스프링프로젝트 hello world 시작하기 (0) | 2021.04.05 |
[JAVA]Intellij IDE 설치 | JAVA 설치 | JDK 다운로드 (0) | 2021.03.26 |