Spring23 record class? 너는 어떤 친구? record?java 16부터 정식으로 도입이 되었고, Record 클래스는 데이터를 저장하는 단순한 클래스(POJO)를 작성할 때 발생하는 반복적인 코드를 줄이기 위해 설계됨. 일반적으로 데이터 객체를 만들 때 필요한 모든 필드, 생성자, 접근자, equals(), hashCode(), toString() 메서드를 자동으로 생성 특징 - record class 필드는 private final 로 선언되어 불변 객체이다. -> 안정성이 향상 됨- 코드가 간결해 진다- @Getter 메서드를 제공- equals() 및 hashCode() 메서드를 자동으로 생성하여 필드 값에 기반한 비교를 수행한다 아래에는 내가 사용해본, record class public record AccommodationItemRe.. 2024. 6. 27. Spring Boot - Paging 기본 개념Spring Boot에서 페이징을 구현하기 위해서는 Spring Data JPA를 주로 사용합니다. Spring Data JPA는 페이징을 쉽게 구현할 수 있는 여러 인터페이스와 클래스를 제공합니다. 주요 클래스는 다음과 같습니다:PageRequest: 페이징 요청을 생성하는 클래스입니다. 페이지 번호와 페이지 크기를 설정할 수 있습니다.Page: 페이징 결과를 담고 있는 인터페이스로, 페이지의 내용(Content), 총 페이지 수(Total Pages), 총 요소 수(Total Elements) 등을 제공합니다.PagingAndSortingRepository: 페이징과 정렬 기능을 제공하는 기본 Repository 인터페이스입니다. 의존성 추가 implementation 'com.queryds.. 2024. 6. 17. [패캠] 리팩토링 출처 : 패캠 스프링강의 양세열 강의자료 IT서비스 에서는 리팩토링이 아주 중요해진 이유는..? 서비스 오픈 후 변화의 폭이 크다 절대 바뀌지 않는다는 정책이 바뀜 국내전용 → 글로벌 PC전용 → 모바일, 앱도 지원 중간에 추가적인 레이어가 하나씩 더 들어가는 경우 흔함 기존 구조를 뒤흔드는 기능 추가를 하는 경우가 많음 1번의 큰 변화는 프로젝트를 최소 1.5배 이상 복잡하게 만든다 이 복잡성을 줄여주는 것이 바로 리팩토링 리팩토링의 주요 포인트 일정에 맞추느라 품질이 다소 떨어졌던 부분 서비스에서 핵심적이면서 사용자 경험에 큰 영향을 끼치는 부분 복잡도가 높고 향후 기능 추가, 변경 가능성이 높은 부분 타 서비스에서도 활용할만한 공통적인 기능 외부 라이브러리나 시스템으로 도출 테스트코드 등도 가능 도.. 2024. 2. 14. [패캠] 테스트 코드 출처 : 패캠감의 스프링프레임워크 TDD & 실무 처음 공부해보고 도입하려고 해보았으나, 클래스의 구성이나 프로그램 구조가 잡히지 않은 상태에서는 어려웠음 여러가지로 공부해보고 실무나 주변을 본 결과 완벽한 의미의 TDD(일단 테스트 먼저 짜고 코드를 만드는 것)은 어렵다 테스트를 잘 하기 위한 기반 클래스나 메서드가 SRP를 잘 지키고, 크기가 적절히 작아야 함 그래야 테스트를 집중력 있게 만들 수 있고 한 메서드에 너무 많은 테스트를 수행하지 않아도 됨 이게 테스트를 하는 것의 장점이 되기도 함(테스트를 하면 자연스럽게 역할이 확인되면서 쪼개짐) 적절한 Mocking을 통한 격리성 확보 단위테스트가 만능은 아니지만, 위의 SRP처럼 해당 메서드의 역할을 정확히 테스트하려면 주변 조건을 적절히 통제해야.. 2024. 2. 13. [패캠] Null-safety 출처 : 초격차패키지 강의자료 Null Safety 널 안정성을 높이는 방법 아래와 같은 코드를 만들지 않는 방법 혹은 아래와 같은 널 체크를 하지 않아서 발생하는 NPE(Null Pointer Exception)을 방지하는 방법 완벽한 방법은 아니지만 IDE(Intellij, Eclipse)에서 경고를 표시함으로써 1차적인 문제를 방지하고, 정확한 에러 위치를 확인할 수 있도록 도움 public void method(String request) { if(request == null) return; // normal process System.out.println(request.toUpperCase()); } @NonNull Annotation 해당 값이나 함수 등이 Null이 아님을 나타내는 어노테이션.. 2024. 2. 9. [패캠] Spring Expression Language(SpEL) 출처 : 초격차패키지 강의자료 SpEL(Spring Expression Language) Expression Language(표현언어)는 짧고 간단한 문법을 통해 필요한 데이터나 설정 값을 얻어올 수 있게 하는 특별한 형태의 표현식에 가까운 간편한 언어(그래프 접근 등 가능) SpEL은 그 중에서도 스프링 모든 영역에서 사용 가능한 언어형식임 주로 @Value("${config.value}")와 같은 방식으로 설정값을 주입 받는데 활용 SpEL의 값 평가(evaluation) SpelParser는 "" 안에 들어있는 문자열을 평가(evaluation)해서 결과값을 만들어낸다. 'Hello World'는 문자열 리터럴이 되며, concat이라는 메서드도 호출할 수 있다. String 객체를 new로 생성해.. 2024. 2. 8. [패캠] Resource 출처 : 초격차 패키지 강의자료 Spring Resource java.net.URL의 한계(classpath 내부 접근이나 상대경로 등)를 넘어서기 위해 스프링에서 추가로 구현 (제가 하고 있는)업무에서는 많이 사용되는 부분은 아니지만, 스프링의 내부 동작을 이해하기 위해서 필요한 부분 Resource Interface와 그 구현체들 public interface Resource extends InputStreamSource { boolean exists(); boolean isReadable(); boolean isOpen(); boolean isFile(); URL getURL() throws IOException; URI getURI() throws IOException; File getFile().. 2024. 2. 8. [패캠] Validation, Data binding 출처 : 패캠 초격차 패키지 강의자료 Validation이란? 한국말로는 유효성검증 주로 사용자 또는 서버의 요청(http request) 내용에서 잘못된 내용이 있는지 확인하는 단계를 뜻함 Validation의 종류 학문적으로 여러 세부적인 단계들이 있기도 하지만 실제로 개발자가 주로 챙겨야 하는 검증은 크게 두 종류로 나뉜다. 데이터 검증 필수 데이터의 존재 유무 문자열의 길이나 숫자형 데이터의 경우 값의 범위 email, 신용카드 번호 등 특정 형식에 맞춘 데이터 비즈니스 검증 서비스에 정책에 따라 데이터를 확인하여 검증 예) 배달앱인 경우 배달 요청을 할 때 해당 주문건이 결제 완료 상태인지 확인 등 경우에 따라 외부 API를 호출하거나 DB의 데이터까지 조회하여 검증하는 경우도 존재 Spring.. 2024. 2. 7. [패캠] AOP 관점 지향 프로그래밍 - Aspect Oriented Programming 특정한 함수 호출 전이나 후에 뭔가 공통적인 처리가 필요하다면!? → AOP 로깅 트랜잭션 인증 OOP로 처리하기에는 다소 까다로운 부분을 AOP라는 처리 방식을 도입하여 손쉽게 공통 기능을 추가/수정/삭제 할 수 있도록 함 AOP의 기본 개념들 Aspect 여러 클래스나 기능에 걸쳐서 있는 관심사, 그리고 그것들을 모듈화함 AOP 중에서 가장 많이 활용되는 부분은 @Transactional (트랜잭션 관리) 기능 Advice 조언, AOP에서 실제로 적용하는 기능(로깅, 트랜잭션, 인증 등)을 뜻함 Join point 모듈화된 특정 기능이 실행될 수 있는 연결 포인트 Pointcut Join point 중에서 해당 Aspect를.. 2024. 2. 7. 이전 1 2 3 다음