소소한개발팁
반응형

1.  스프링 프레임워크가 시작되면 먼저 스프링이 사용하는 메모리 영역을 만들게 되는데 이를 Contexet라고 합니다. 스프링에서는 ApplicationContext라는 이름의 객체가 만들어집니다.

 

2. 스프링은 자신이 객체를 생성하고 관리해야 하는 객체들에 대한 설정이 필요합니다. 이에 대한 설정이

root-context.xml  파일 입니다.

 

3. root-context.xml 에 설정 되어 있는 <context:component-scan> 태그의  basePackage 메서드 를 통해서 패키지를 스캔하게 됩니다.

 

4. 해당 패키지에 있는 클래스들 중에서 스프링이 사용하는 @Component라는 어노테이션이 존재하는  클래스의 인스턴스를 생성합니다.

 

5. 객체에 인터페이스가 필요하다는 설정이 있는 어노테이션 @Autowired 를 확인하고 인터페이스의 레퍼런스를 객체에 주입합니다.

 

@ContextConfiguration : 지정된 클래스나 문자열을 이용해서 객체들을 스프링 내에 객체로 등록하게 됩니다.

(흔히 스프링의 빈으로 등록된다고 표현합니다.)

 

@ContextConfiguration 에 사용하는 문자열은 'classpath:' 나 'file:'을 이용할 수 있으므로, 이클립스에서 자동으로 생성된 root-context.xml 경로를 지정할 수 있습니다.

 

@Log4j는 Lombok을 이용해서 로그를 기록하는 Logger를 변수로 생성합니다.

별도의 Logger 객체의 선언이 없어도 Log4j 라이브러리와 설정이 존재한다면 바로 사용할 수 있습니다.

'Spring Legact Project'로 생성하는 경우 기본으로 Log4j와 해당 설정이 완료되는 상태이기 때문에 별도의 처리 없이도 사용이 가능합니다. 로그에 대한 설정은 'src/main/resource'와 src/test/resources' 에 별도로 존재합니다.

 

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

 

@Test 는 JUnit 에서 테스트 대상을 표시하는 어노테이션입니다. 

테스트 작업은 프로젝트 초기에 설정해 두고 사용하는 습관을 가지는 것이 좋습니다.

 

스프링은 관리가 필요한 객체를 어노테이션 등을 이용해서 객체를 생성하고 관리하는 일종의 '컨테이너'나 '팩토리' 의 기능을 가지고 있습니다.

 

Lombok Annotation

 

@Data: Lombok에서 가장 자주 사용되는 어노테이션 @ToString, @EqualsAndHashCode, @Getter/@Setter, @RequiredArgsConstructor 를 모두 결합한 형태

 

Log4j Annotation

 

@Log: 로그 객체를 생성한다.

 

Spring Annotation

 

@Component : 해당 클래스가 스프링에서 객체로 만들어서 관리하는 대상임을 명시하는 어노테이션

@Autowired : 스프링 내부에서 자신이 특정한 객체에 의존적이므로 자신에게 해당 타입의 빈을 주입해주라는 표시이다.

 

Test Annotation

 

@ContextConfiguration : 스프링이 실행되면서 어떤 설정 정보를 읽어 들여야 하는지를 명시합니다. 속성으로는 locations 를 이용해서 문자열의 배열로 XML, 설정 파일을 명시할 수도 있고, classes 속성으로 @Configuration이 적용된 클래스를 지정해 줄 수 도 있습니다.

@Runwith : 테스트시 필요한 클래스를 지정합니다. 스프링은 SpringJUnit5ClassRunner 클래스가 대상이 됩니다.

@Test: JUnit에서 해당 메서드가 JUnit 상에서 단위 테스트의 대상인지 알려줍니다.

 

 

반응형

'프레임워크 > Spring' 카테고리의 다른 글

스프링 - 오라클 데이터 베이스와의 연결  (0) 2019.12.19
스프링의 의존성 주입  (0) 2019.12.19
스프링 이란?  (0) 2019.12.18
Spring - Java Configuration  (0) 2019.12.18
Lombok 라이브러리 설치  (0) 2019.12.18
profile

소소한개발팁

@개발자 뱅

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!