1. Bean 등록 의존관계 주입 Annotation 종류



@Component 

컴포넌트를 나타내는 일반적인 스테레오 타입으로 <bean> 태그와 동일한 역할을 한다.



@Repository

퍼시스턴스(persistence)레이어, 영속성을 가지는 속성(파일, 데이터베이스)을 가진 클래스



@Service

서비스레이어, 비즈니스 로직을 가진 클래스



@Controller

프리젠테이션, 레이어, 웹 어플리케이션에서 웹 요청과 응답을 처리하는 클래스



@Autowired

- 정밀한 의존관계 주입(Dependency Injection)이 필요한 경우 유용하다.

- @Autowired는 변수, setter메서드, 생성자, 일반메서드에 적용 가능하다.

- @Autowired는 <property>, <constructor-arg> 태그와 동일한 역할을 한다.

- 의존하는 객체를 주입할 떄 Type을 이용한다.



@Resource

- 어플리케이션에서 필요로 하는 자원을 자동 연결할 떄 사용된다.

- @Resource는 변수, setter메서드에 적용 가능하다.

- 의존하는 객체를 주입할 때 주로 Name을 이용한다.



@value

- 단순한 값을 주입할 때 사용되는 어노테이션이다.

- @Value("Spring")은 <property.. value="Spring" /> 과 동일한 역할이다.



@Qualifier

- @Qualifier는 @Autowired 어노테이션과 같이 사용되어 진다.

- @Autowired는 타입으로 찾아서 주입하므로 동일한 타입의 Bean 객체가 여러개 존재할때

특정 Bean을 찾기 위해서는 @Qualifier를 같이 사용해야 한다.



@Bean

- @Bean 어노테이션은 새로운 빈 객체를 제공할때 사용되며 @Bean이 적용된 메서드의 이름을 

Bean의 식별값으로 사용한다.



@Configuration

- 클래스에 @Configuration 어노테이션을 선언하는 것은 스프링 IoC 컨테이너가 해당 클래스를

Bean 정의의 설정으로 사용한다는 것을 나타낸다.




<context:component-scan> 태그


@Component를 통해 자동으로 Bean을 등록하고 @Autowired로 의존관계를 주입받는

어노테이션을 클래스에서 선언하여 사용했을 경우에는 해당 클래스가 위치한 특정 패키지를 scan하기 위한 설정을

XML에 해주어야 한다.


1
<context:component-scan base-package="di.annot" />
cs


<context:include-filter> 태그 ( 자동 스캔 대상에 포함시킬 클래스 )

<context:exclude-filter>태그 ( 자동 스캔 대상에 포함시키지 않을 클래스 )

를 사용하여 구체적으로 명시할 수 있다.



+ Recent posts