본문 바로가기
OpenSource/Spring

spring bean 등록 방법

by 태하팍 2013. 1. 4.
반응형


spring을 거의 대부분이 mvc 요즘은 @mvc를 사용 한다. @mvc는 어노테이션을 사용하는 mvc를 말한다.
그래서 인지 자바 stand alone 형태에서는 빈을 가지고 노는걸 잘 모르는 경우가 많다.

우선 방법은 spring mvc와 spring bean을 자바단에서 빈을 등록 시키고 DI 해주는게 있다는 것을 전제 하에
알아 보도록 하겠다.

spring @mvc는 간단히 설명을 하면 was가 기동 되어질 때 bean이 등록 되어진다. 등록 되어진 bean을 와이어링(@Autowired)을 하여 연결 해준다. 아마도..C로 말하면 주소값을 가져오는 것 같다. 그래서 그 객체를 가지고 쓸 수 있도록 한다.

이제 이 페이지에서 알아 볼 것은 자바단에서 빈을 등록 시키고(context 호출) 사용하는 방법을 2가지로 알아 보겠다.

spring의 모든 것을 외우기는 힘드니깐 찾아 볼 수 있도록 토비책을 옆에 두면 더 좋을 것이다^^;
자바에서 configuration을 가져와서 bean을 등록 시켜주는 것을 전혀 안쓸 줄 알았는데..쓰인다!! ㅋㅋ

1) 첫번째 방법

  public class OssMain {
 
 public OssMain(){}
 
 
 /**
  * @param args 
  */
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  System.out.println("##########start################");
  ApplicationContext context = new GenericXmlApplicationContext("classpath:spring/context2/context-*.xml");
  
  KtOssService ktOssService = context.getBean("ktOssService",KtOssService.class);
  List<UpSoworkOdrSelectVo> aa = ktOssService.callOssProc();    
  System.out.println("##########end################");
  System.out.println("##SCN##=>"+aa.toString());
  
  
 }

}


2) 그 외 소스는 생략 하도록 하겠다 사실  main에서 잡아주는 부분이 핵심이기 때문이다.
그래서 더 보자면 위의 GenericXmlApplicationContext을 사용하여 context-*.xml을 다 읽어드린다.
여러개의 xml 중 <context:component-scan base-package="kr.pe.acet"/>
component-scan이라는 녀석이 있다. 명명에서도 보다 시피 스캔!!을 한다.
그래서 빈으로 전부 등록 시켜줘버린다.
tip. <context:annotation-config"/> : XML로 등록된 빈의 의존관계 정보 애노테이션을 이용해서 의존관계 메타정보를 추가해주는 빈 후처리기가 등록 된다.
<context:component-scan base-package="kr.pe.acet"/>

2) 두번째 방법 : @RunWith,  @ContextConfiguration 을 사용하는 테스트 컨텍스트 프레임워크를 사용!!


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
  "classpath:spring/context2/context-osscommon.xml",
  "classpath:spring/context2/context-datasource.xml",    
  "classpath:spring/context2/context-mybatis.xml", 
  
  })

public class OssMain {
 
 @Autowired
 KtOssService ktOssService;
 
 public OssMain(){}
 
 @Test
 public void startProcedure() {    <--- (public static void main(String[] args)였는걸 메소드 형태로!!)
  // TODO Auto-generated method stub
  System.out.println("##########start################");
  //ApplicationContext context = new GenericXmlApplicationContext("classpath:spring/context2/context-*.xml");
  
  //KtOssService ktOssService = context.getBean("ktOssService",KtOssService.class);
  List<UpSoworkOdrSelectVo> aa = ktOssService.callOssProc();    
  System.out.println("##########end################");
  
  //UpSoworkOdrSelectVo aa = om.callService();
  System.out.println("##SCN##=>"+aa.toString());
  
 }

}


스프링의 최고의 장점으로 테스트를 말하고 있다.
아직 테스트 코드에 능숙하지는 않지만 하나하나씩 습득해야 할 것 같다.

- 끝 -



반응형