Skip to the content.

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

한마디로 정리하자면 @Component로 지정한 클래스들을 @ComponentScan이 그 클래스들을 찾으면서

빈 생성을 하도록 한다.(+@Configuration을 찾아서 같이 빈 생성을 한다.)

그리고 이것들을 파싱해서 스택메모리에 위치시키고 생성한다.

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

만약에 @Component를 선언하지 않은 객체라면 스프링이 관리하지 않는 객체이므로 에러를 발생시킨다.

테스트 실행

@RunWith(SpringJUnit4ClassRunner.class)–>테스트에 필요한 클래스를 지정한다.

예제에서는 SpringJUnit4ClassRunner 클래스가 해당 대상이 된다.

@ContextConfiguration(“file:src/main/webapp/WEB-INF/spring/root-context.xml”)–>

테스트에서 가장 중요한 어노테이션인데 스프링이 실행되면 어떤 설정 정보를 읽어야 하는지 명시해준다.

해당코드는 XML 방식으로 불러오는 것이며 하단은 Java 형식으로 불러오는 방식이다.
@ContextConfiguration(classes= {RootConfig.class})

@Test

해당 어노테이션은 메서드에 선언하는데 이것은 우선 테스트를 수행한다는 메서드라는걸 표시해준다.

각각의 테스트가 서로 영행을 주지 않고 독립적으로 실행됨을 선언한다.

@AllArgsConstructor는 인스턴스 변수로 선언된 모든 것을 생성자에 파라미터로 받는다.

그리고 만약에 Car라는 객체를 car라고 인스턴스 변수를 선언하면

해당 변수로 생성자에 선언 및 빈 생성에 포함된다.

추가적으로 생성자에 들어가는 파라미터를 선택적으로 선언하고 싶다면

해당 인스턴스선언에 @NonNull을 선언해주고

상위 클래스에는 @RequiredArgsContructor를 선언해주면 된다.