스프링 개발 환경 구축 02 스프링의 특징과 의존성 주입 2.3 스프링 동작 순서

스프링 동작 순서

① 스프링이 사용할 메모리영역 ( = ApplicationContext 객체) 가 만들어진다. 

② root-context.xml의 <context:component-scan> 태그를 통하여 org.zerock.sample 패키지를 스캔한다.

③ @Component 가 있으면 클래스의 인스턴스를 생성한다.

④ Restaurant 클래스에  Chef 객체에 @Autowired 가 있으므로, Chef 객체의 레퍼런스를 Restaurant클래스에 주입한다.


테스트 코드를 통한 확인 (XML 이용)

src/test/java 폴더 내 org.zerock.sample.SampleTests 클래스를 추가한다.

Junit 은 4.10 이상 버전을 사용한다.

@RunWith(SpringJUnit4ClassRunner.class)

@Runwith : 현재 테스트 코드가 스프링을 실행하는 역할을 할 것이라는 것을 표시


@ContextConfiguration("file:src/main/weapp/WEB-INF/spring/root-context.xml")

@ConetxtConfiguration : 지정된 클래스나 문자열을 이용해서 필요한 객체들을 스프링 내에 객체로 등록함

                                 스프링이 실행되면서 어떤 설정 정보를 읽어 들여야 하는지 명시.


@Log4j : Lombok을 이용해서 로그를 기록하는 Logger를 변수로 생성한다. (Log4j 라이브러리와 설정 존재 시)

※ Spring Leagacy Project 로 생성할 경우, Log4j 설정이 완료되 있음.


@Autowired : 해당 인스턴스 변수가 스프링으로부터 자동으로 주입해 달라는 표시


@Test : JUnit에서 테스트 대상을 표시


Run As > Junit Test 를 실행하여 결과를 확인한다.

 

테스트 코드를 통한 확인 (JAVA 이용)

 

XML 설정에서 작성했던 @ContextConfiguration 부분을 아래와 같이 변경한다.

@(ContextConfiguration(classes = {rootConfig.class})


어노테이션 정리

Lombok 관련 어노테이션 Spring 관련 어노테이션 테스트 관련 어노테이션
@Setter
@Data (가장 자주 사용)
@Log4j
@Autowired
@Component
@Runwith
@ContextConfiguration
@Text

 

Lombok 의 속성명 의미
value 접근 제한 속성 의미 
onMethod setter 메서드의 생성 시 메서드에 추가할 어노테이션을 지정
JDK8 부터
@Setter(onMethod_={@AnnotationsGohere})
onParam setter 메서드의 파라미터에 어노테이션을 사용하는 경우 적용

 

댓글()
구독