🍃 Language/Java

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

카프리썬_ 2021. 4. 7. 18:06
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
반응형