일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- Handler Adepter
- open session in view
- 메서드 주입
- @FunctionalInterface
- 일괄처리
- 싱글 스레드
- 빈
- Dispatcher Servlet
- OSIV
- Spring Framework
- Open EntityManager In View
- 스프링 빈
- @Configuration
- Spring Batch
- 이펙티브 자바
- 가변 객체
- View Resolver
- @componentScan
- mavenCentral
- @Bean
- Request flow
- 참조 타입
- Batch
- 익명 함수
- spring boot
- open-in-view
- 생성자 주입
- 필드 주입
- 불변 객체
- 컴포넌트스캔
- Today
- Total
보다 더 나은 내일의 나를 위해
@Service를 record 클래스로 작성해도 괜찮을까? 본문
개요
record는 자바 14 버전에서 새로 추가된 클래스의 종류 중 하나입니다. 다음 문서에서 설명하는 record의 목적은 다음과 같습니다.
데이터를 데이터로 모델링하기
- JEP 359
record 클래스의 간단한 특징은 다음과 같이 정리할 수 있습니다.
- record 클래스는 final 클래스이다.
- 모든 필드가 private final로 선언된다.
- 모든 필드에 대해 초기화하는 생성자가 생성된다.
- 각 필드에 대해 필드 명을 딴 getter가 생성된다. (ex. private final String name -> public String name())
- equals(), hashCode(), toString() 함수를 암묵적으로 정의한다.
이런 특징들을 봤을 때, @Service 클래스는 의존성 주입을 위해 RequiredAllArgument 생성자를 사용하기도 하고 record로 사용해도 크게 문제는 없을 것 같습니다.
자료
이와 관련해서 스택오버플로우에서 글을 찾을 수 있었습니다.
Is it OK to use Java Records with @Service / @RestController annotations
I'd prefer it as a record as there is less boilerplate, but would there be issues? IntelliJ is suggesting that I turn a basic Java class @Service like this: @Service public class LocationService { ...
stackoverflow.com
다음 글의 답변에 따르면 @Service와 같은 클래스에서는 필요 없는 Getter, toString 등의 메서드들을 생성하므로 @Service 클래스를 record로 선언하는 것은 좋지 않은 생각 같다고 합니다.
결론
위 자료에서 보았던 의견에 대해 동의합니다. 또한 JAVA에서 설명하는 record클래스의 목적과도 맞지 않아 보이며 record는 enum과 같이 목적을 위해 제한된 형식의 클래스이므로 @Service 클래스를 record로 선언해 사용하는 것은 좋은 생각은 아닌 것 같아 보입니다.
'spring' 카테고리의 다른 글
DI[Dependency Injection] - @Autowired와 생성자 주입의 차이점 (0) | 2022.06.29 |
---|---|
[Spring Boot] Interceptor와 Filter는 어떤 게 다를까? (0) | 2022.06.27 |
[Spring Boot] @Component와 @Bean의 차이는? (0) | 2022.06.13 |
Spring MVC 요청 흐름 (0) | 2022.06.02 |