개발자가 직접 작성한 Class를 Bean으로 만드는 것으로 Bean객체의 이름은 '클래스 이름의 첫 문자를 소문자'로 바꾼 것이 Bean의 이름이 된다.
싱글톤 클래스 빈을 생성하는 어노테이션이며 물론, @Scope를 통해 싱글톤이 아닌 방식으로도 생성이 가능하다.
반대로 @Bean 어노테이션의 경우 개발자가 직접 제어가 불가능한 외부 라이브러리등을 Bean으로 만들려할 때 사용된다.
사용방법
@Component
public class FileUp{} // Bean Name = "fileUp"
@Component("down")
public class FileDown{} // Bean Name = "down"
public class File{
@Autowired // 같은 타입의 빈을 자동으로 주입시킨다.
private FileUp fileUp;
@Autowired
@Qualifier("down") // @Qualifier를 사용하여 Autowired될 빈의 이름을 지정할 수 있다.
private FileDown filedown;
}
@Bean vs @Component
@Bean은 메소드에 사용하며 개발자가 컨트롤이 불가능한 외부 라이브러리에 사용시 사용하는 점과 @Component은 클래스에 사용하며 개발자가 직접 컨트롤이 가능한 내부 클래스에 사용한다는 점