[꼼꼼한 개발자] 꼼코더

09. 코드로 배우는 스프링 웹 프로젝트 - [스프링의 특징과 의존성 주입] - Lombok 관련, 테스트 관련, 스프링 어노테이션들 본문

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

09. 코드로 배우는 스프링 웹 프로젝트 - [스프링의 특징과 의존성 주입] - Lombok 관련, 테스트 관련, 스프링 어노테이션들

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

✍🏻  Lombok 관련, 테스트 관련, 스프링 어노테이션들

🌶  Lombok 관련 어노테이션

  • @Setter
  • @Data
  • @Log4j

🍃 Spring 관련 어노테이션

  • @Component
  • @Aurowired

👨🏻‍💻 테스트 관련 어노테이션

  • @RunWith
  • @ContextConfiguration
  • @Test

 

💬 어노테이션 사용 예재(참고 자료)

 

🌶 Lombok 관련 어노테이션

  • Lombok은 간단하게 말하면 컴파일시 흔하게 동작하는 기능들을 완성해주는 라이브러리이다.

✍🏻 @Setters 어노테이션

  • @Setters 어노테이션은 setter 메서드를 만들어 주는 역할.
  • Restaurant 클래스를 자세히 보면 아래와 같이 setter 메서드가 작성된 것을 볼 수 있다.

🔎 Setters의 속성

value
  • 접근 제한 속성을 의미
  • 기본값은 lombok.AccessLevel.PUBLIC
onMethod
  • setter 메서드 생성 시 메서드의 추가할 어노테이션을 지정(예제는 @Autowired 사용)
  • JDK 버전에 따라 ‘_’ 표기가 사용된다.
onParam
  • setter 메서드의 파라미터에 어노테이션을 사용하는 경우에 적용
 

✍🏻 @Data 어노테이션

  • Loombok에서 가장 자주 사용되는 어노테이션이다.
  • @ToString, @EqualsAndHashCode, @Getter/Setter, @RequiredArgsConstructor를 모두 결합한 형태로 한 번에 자주 사용되는 모든 메서드를 생성할 수 있다는 장점이 있다.
  • 만일 세부적인 설정이 필요 없다면 @Data를 주로 사용한다.
 

✍🏻 @Log4j

  • 로그 객체를 생성
  • Log4j가 존재한다면 설정을 하고, 존재하지 않다면 @Log로 사용할 수 있다(그림 참고).
  • @Log를 클래스 쪽에 붙여주면 내부적을 static final로 Logger 객체가 생성되므로 개발 시 별도의 로그를 설정할 필요 없이 필요한 코드를 만들어 낼 수 있다.
  • STS 등을 이용해서 ‘Spring Legacy Project’로 생성한 경우에는 기본적으로 log4j가 설정이 되어있어 추가적인 설정 없이 @Log4j만으로 로그 객체를 준비할 수 있다.

🍃Spring 관련 어노테이션

✍🏻 @Component

  • 해당 클래스가 스프링에서 객체로 만들어서 관리하는 대상임을 명시하는 어노테이션
  • @Component가 존재하는 클래스들은 객체로 생성해서 빈으로 관리하게 된다.
 

✍🏻 @Aurowired

  • 스프링 내부에서 ‘나는 특정한 객체에 의존적이니 나에게 해당 타입의 빈을 주입해줘’ 라는 표시.
  • 스프링은 @Aurowired 어노테이션을 보고 스프링 내부에서 관리되는 객체(들) 중에 적당한 것이 있는지 확인하고, 자동으로 주입한다. (필요 객체가 존재하지 않다면 error 발생)

👨🏻‍💻 Test 관련 어노테이션

✍🏻 @ContextConfiguration

  • 테스트 관련해서 가장 중요한 어노테이션
  • 스프링이 실행되면서 어떤 설정 정보를 읽어 들여야 하는지를 명시
  • 속성으로는 locations를 이용해 문자열의 배열로 XML 설정 파일을 명시할 수 있다.
  • classes 속성으로 @Configuration이 적용된 java 클래스를 지정해 줄 수도 있다.

 

✍🏻 @RunWith

  • 테스트 시 필요한 클래스를 지정
  • 스프링은 SpringJUnit4ClassRunner 클래스가 대상이 된다.
  • @RunWith는 '나는 이 클래스를 가지고 테스트를 진행 할 거야' 라는 어노테이션

 

✍🏻 @Test

  • junit에서 해당 메서드가 jUnit상에서 단위 테스트의 대상인지 안내.

 


 

🧹 최종 정리

  • ‘root-context.xml’ 설정 파일을 읽어 관리하고 생성해야 하는 객체 정보를 읽는다.
  • Lombok은 간단하게 말하면 컴파일시 흔하게 동작하는 기능들을 완성해주는 라이브러리이다.
  • Lombok에서 @Data를 가장 많이 사용된다 @Data를 주로 사용
  • @Aurowired는 ‘나는 특정한 객체에 의존적이니 나에게 해당 타입의 빈을 주입해줘’ 라는 어노테이션이다.
  • @Component은 해당 클래스가 스프링에서 객체로 만들어서 관리하는 대상임을 명시하는 어노테이션
  • @RunWith는 '나는 이 클래스를 가지고 테스트를 진행 할 거야' 라는 어노테이션
  • @Test는 '해당 메서드는 jUnit상에서 테스트 대상 입니다' 라는 어노테이션.
  • @ContextConfiguration은 테스트 관련해서 가장 중요한 어노테이션이다.
  • @ContextConfiguration의 문자열로 XML 설정 파일을 명시할 수 있고, @Configuration이 적용된 java 클래스를 지정해 줄 수도 있다.

 

 

 

 

 

 

 

 

 
Comments