- Spring 은 SOLID 원칙을 잘 지키도록 도와준다.starryeye이번 포스팅 주제는 개인적으로 생각하는 Spring 의 철학입니다. 들어가기 앞서 SOLID 원칙에 대해 살짝 알아보고 가봅시다. SRP (Single Responsibility Principle)단일 책임 원칙입니다. 하나의 클래스는 하나의 책임만 가져야 한다. 다른 말로는 클래스가 변경되는 이유는 한가지여야 한다 입니다. OCP (Open / Close Principle)개방 폐쇄 원칙입니다. 풀어서 보면, 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 입니다. 좀더 쉽게 보자면, 확장에는 열려있다. -> 애플리케이션의 요구 사항이 변경될 때, 이 변경에 맞게 새로운 동작을 추가해 모듈을 확장할 수 있다. 수정에 닫혀있다. -> 기존의 소스 코드를 수정하지 않아도 모듈의 기능을 ..
- 2023-11-14 22:18:03
- Reactive Programming (Reactive stream)starryeye지난 포스팅(Reactive manifesto) 에 이어 작성한다. Reactive Programming (반응형 프로그래밍) 이란.. 비동기 이벤트 처리 및 데이터 스트림 개념을 기반으로 하는 선언적 프로그래밍 패러다임이다. 위의 정의를 대충 느끼지말고 정확하게 의미를 짚어서 이해를 해보자.. 그럼, 알아야할 개념을 한단계씩 알아가보겠다. 고차 함수 (High Order Function) 란.. 함수를 매개변수로 받거나 함수를 리턴하는 함수를 뜻한다. 일급 객체 (First Class Object) 란.. - 변수에 할당할 수 있어야한다. - 객체의 인자로 넘길수 있어야한다. - 객체의 리턴 값으로 리턴할 수 있어야한다. 참고 자바 8 이전에서는 함수가 일급 객체에 해당되지 않았지만.. 자바 8 이후 ..
- 2023-11-08 00:58:16
- @Async, TaskExecutor, CompletableFuturestarryeyehttps://docs.spring.io/spring-framework/reference/integration/scheduling.html Task Execution and Scheduling :: Spring Framework All Spring cron expressions have to conform to the same format, whether you are using them in @Scheduled annotations, task:scheduled-tasks elements, or someplace else. A well-formed cron expression, such as * * * * * *, consists of six space-separated time docs.spring.i..
- 2023-06-17 18:47:03
- JPA Entity Default ConstructorstarryeyeJPA 의 공식 문서 JSR 338, Java Persistence API 를 보면.. 이런말이 나온다. 2.2 version https://download.oracle.com/otn-pub/jcp/persistence-2_2-mrel-spec/JavaPersistence.pdf?AuthParam=1686147162_93e6225ea2a6979ada32934da41475b1 즉, 엔티티 클래스는 Default 생성자를 반드시 가져야한다. (생성자의 접근지정자는 public or protected) 물론 표준 스팩일 뿐이므로 JPA 의 구현체 마다 다를 수 있다. 오늘은 이 부분에 대해 알아보자.. JPA 의 Entity 생성 방식 DB 에서 데이터를 읽고 Entity 를 반환해주려면.. JPA Entit..
- 2023-06-07 23:57:42
- Java 16 주요 변경점starryeyeJDK 16 1. Stream 클래스에 메서드 추가 toList() 스트림의 요소들을 순서대로 List 에 담아 반환한다. Java 16 이전에는 collect(Collectors.toList()) 를 사용했지만, 좀더 간결하게 표현 가능해졌다. mapMulti() mapMulti() 를 알아보는 김에.. map(), flatMap(), multiMap() 를 알아보겠다. (map, flatMap 은 Java 8) map() 스트림 내부의 요소 하나하나에 접근해서... 파라미터로 넣어준 함수를 실행한 뒤 최종연산에서 지정한 형식으로 반환해주는 메서드이다. flatMap() 스트림 내부의 각 요소를 한번 더 또다른 스트림으로 변환하고, 이렇게 생성된 모든 스트림을 하나의 스트림으로 결합한다. (중첩된 데이..
- 2023-05-20 01:41:47
- Java 11 ~ 15 주요 변경점starryeyeJDK 11 1. String 클래스에 유용한 메서드 추가 isBlank() 문자열이 비어있거나, 공백 문자만을 포함하고 있는지 검사한다. lines() 문자열을 줄바꿈 문자 '\n' 를 기준으로 분리하고, 분리된 각 줄을 요소로하는 stream 을 반환한다. repeat(int n) 문자열을 주어진 횟수만큼 반복하여 반환한다. strip(), stripLeading(), stripTrailing() 문자열의 앞뒤 혹은 특정 부분에서 공백 문자를 제거한다. trim() 메서드와 비슷하지만.. trim() 메서드는 ASCII 공백 문자만 처리하지만, strip() 계열 메서드는 유니코드 공백 문자를 모두 처리하여 상위호환이다. ASCII 공백 문자 : 스페이스(' '), 탭('\t'), 줄바꿈('\n') ..
- 2023-05-19 22:36:07
- Java 9, 10 주요 변경점starryeyeJDK 91. 인터페이스에 private 메서드 추가이전 history Java 8 버전에서는 인터페이스에 default, static 메서드가 추가 되었었다. 내용 Java 9 버전에서는 인터페이스에 private 메서드가 추가되었다. 코드 추상 클래스 vs 인터페이스 - 둘 다 객체로 만들 수 없다. - 추상클래스는 public, protected, private 가능하지만, 인터페이스는 public, private 가능 - 추상클래스에는 멤버변수 선언 가능, 인터페이스는 public static 변수만 선언 가능 - 추상클래스는 extends 1개 가능, 인터페이스는 implements 여러개 가능 2. try-with-resources 문법, effectively final 변수이전 history..
- 2023-05-19 21:19:19
- 불변 객체 validationstarryeye불변 객체, lombok @Value 와 Java record 포스팅에서 이어진다. 개발을 하다보면 불변 객체는 Dto 로 사용되며 이는 Architecture 관점에서 각 layer 의 입력 모델과 출력 모델에 해당한다. 또한, 입력 모델과 출력 모델에 대한 검증 책임은 각 layer에 있기 때문에 불변 객체의 validation 은 항상 신경 써줘야 한다.. (생성 시점) 이번 포스팅에서는 불변 객체의 생성시점에서 자주 사용되는 검증 방법을 코드로 한번 알아보겠다. -> 선언적 유효성 검사 방법 -> 개발자가 모두 구현하는 방식은 제외 Lombok 을 사용한 방법 import lombok.Builder; import lombok.NonNull; import lombok.Value; @Value @Bu..
- 2023-05-07 06:32:38
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)