Wookim

Spring bean객체 Component Scan으로 등록하기 본문

카테고리 없음

Spring bean객체 Component Scan으로 등록하기

개발자인 경우 2020. 5. 6. 13:08

들어가기전에

레거시 spring 프로젝트는 bean객체를 등록하는 방법으로 

xml 파일에 하나하나 등록하는 방법을 사용한다.

해보면 안다.

 

매우 귀찮다.

관리하기도 어렵고.. 

 

신입 입장으로 히스토리를 모르면 

서비스 빈객체 등록하는 것도 

힘들다.

 

그래서 빈객체를 관리하는 방법 중 어노테이션과 컨피그레이션에 대해 소개하겠다.


@Configuration

위 어노테이션은 spring 웹프로젝트의 설정 파일에 옵션을 추가해주는 역할을 한다고 이해하면 됨.

즉 설정파일을 수정하지 않고 java코드로 설정을 관리할 수 있도록 해준다.

 

@ComponentScan

위 어노테이션은 지정한 위치의 자바 코드드를 스캔하여 빈객체로 자동 등록한다.

예로 @Component 계열 어노테이션이 붙은 소스코드가 있다면 빈객체로 자동 등록 해준다.

 

자세한 이야기는 코드를 먼저 보고 이야기하겠다.

 

 

1. 아래 코드가 명시한 경로 하위의 소스코드들을 스캔한다.

// Configuration 설정 자바 소스코드
@Configuration  
@ComponentScan(basePackages = {"com.test.service.impl", "com.test.controller"})  
public class ConfigureClass {
	// 코드 내용은 따로 필요없다.
}

스캔할 패키지 경로를 하나로 설정할 수 도 있지만 만약 여러개라면 아래처럼 
{ "경로1", "경로2"} 배열식으로 작성한다.
단일 경로라면 아마 basePackages = "경로1" 이렇게 작성하면 될것이다.

 

 

 

2. 해당 경로의 소스코드에 어노테이션으로 빈객체를 명시했다면 빈객체로 자동 등록해준다.

// 서비스 객체 예

package com.test.service.impl;

@Service("serviceBeanName")
public class ServiceBeanTest implements ServiceBean{
	@Autowried 
    // 빈객체로 등록했기 때문에 autowird 어노테이션으로 빈객체 참조 가능하다.
    ....
    ...
}


// 콘트롤러 객체 예
package com.test.controller;

@Contoller("mainContoller")
public class MainController{
	// 빈객체로 등록했기 때문에 autowird 어노테이션으로 빈객체 참조 가능하다.
	@Autowried
	ServiceBean serviceBean;

...

}

위처럼 @Service("빈객체이름") 으로 빈객체를 명시한다면 

compoentScan이 진행할 때 해당 빈객체 이름으로 등록된다.

다른 빈객체에서 참조가 가능해진다. 

 


자 지금까지 레거시 spring 프로젝트에서 

componentScan 어노테이션과 여러가지 component계열 어노테이션으로 

설정파일 수정 없이! 

빈객체를 등록하고 사용하는 방법에 대해 정리해보았다.

 

Comments