본문 바로가기
🍃 Language/Java

[Spring] 어노테이션(Annotation)이란? | Bean이란?

by 카프리썬_ 2021. 4. 7.
728x90
728x90

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

728x90
반응형