[꼼꼼한 개발자] 꼼코더

08. 코드로 배우는 스프링 웹 프로젝트 - [스프링의 특징과 의존성 주입] - 스프링이 동작하면서 생기는 일 본문

Spring/코드로 배우는 스프링 웹 프로젝트

08. 코드로 배우는 스프링 웹 프로젝트 - [스프링의 특징과 의존성 주입] - 스프링이 동작하면서 생기는 일

꼼코더 2022. 12. 26. 20:33
반응형

이전글 보기 : 07. 코드로 배우는 스프링 웹 프로젝트 - [스프링의 특징과 의존성 주입] - 스프링이 동작하면서 생기는 일

✅ 테스트 코드를 통한 확인

  • ex00 → src/test/java → 폴더에 org.zerock.sample.SampleTest 클래스 작성
  • SampleTest 클래스는 spring-test 모듈을 이용해서 간단하게 스프링을 가동시켜 위에서 설명한 동작들이 일어나게 한다.
  • 이때 반드시 Junit은 4.10 이상의 버전을 사용해주도록 하자.
  • @Runwith : 현재 테스트 코드가 스프링을 실행하는 역할을 할 것
 

💁🏻‍♂️ 결과

 


🙋🏻‍♂️ 결과에서 주목해야 하는 부분

  • new Restaurant()와 같이 Restaurant 클래스에서 객체를 생성한 적이 없음에도 객체가 생성 됐다.
    • 이처럼 스프링은 관리가 필요한 객체(Bean)를 어노테이션 등을 이용해서 객체를 생성하고 관리하는 일종의 ‘컨테이너’나 ‘팩토리의 기능을 가지고 있다.
  • Restaurant 클래스의 @Data 어노테이션으로 Lombok을 이용해서 여러 메소드가 만들어졌다.
    • Lombok은 자동으로 getter/setter 등을 만들어 주는데 스프링은 생성자 주입 혹은 setter 주입을 이용해서 동작한다.
    • Lombok을 통해서 getter/setter 등을 자동으로 생성하고 ‘onMethod’ 속성을 이용해 작성된 setter에 @Auotowired 어노테이션을 추가한다.
  • Restaurant 객체의 Chef 인스턴스 변수(맴버 변수)에 Chef 타입의 객체가 주입되어 있다는 점
    • 스프링은 @Auotowired와 같은 어노테이션을 이용해서 개발자가 직접 객체들과의 관계를 관리하지 않고, 스프링에서 자동으로 관리하도록 한다.

 


 

☕️ Java를 이용하는 경우의 테스트 설정

테스트에서 사용한 @ContextConfiguration 어노테이션은 XML 뿐만 아니라 Java 설정에 이용된다.

위에 SampleTests 클래스의 선언부는 Java 설정을 이용하는 ‘jex00’ 프로젝트에서는 아래와 같이 변경된다

 

 

🧹 최종 정리

  1. spring-test 모듈을 이용해 간단하게 스프링을 가동시켜 테스트 후 로그를 확인할 수 있다.
  2. 스프링은 관리가 필요한 객체(Bean)를 어노테이션 등을 이용해서 객체를 생성, 관리하는 ‘컨테이너’나 ‘팩토리의 기능을 가지고 있다.
  3. Lombok을 통해서 getter/setter 등을 자동으로 생성한다.
  4. 스프링은 @Auotowired와 같은 어노테이션을 이용해서 개발자가 직접 객체들과의 관계를 관리하지 않고, 스프링에서 자동으로 관리하도록 한다.

 

 
Comments