람다 표현식 💡 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있습니다. 람다 표현식은 이름은 없지만 매개변수, 구현부, 반환 타입, 예외 종류를 가질 수 있습니다. 특징 익명 - 보통의 메서드와 달리 이름이 없으므로 익명이라 표현합니다. 이름이 없으므로 네이밍 걱정이 줄어들 수 있습니다. 함수 - 람다는 메서드처럼 클래스에 종속되지 않으므로 함수라고 부릅니다. 전달 - 람다 표현식을 메서드 인수로 전달하거나 변수에 저장할 수 있습니다. 간결성 - 익명 클래스처럼 구구절절하게 코드를 구현할 필요가 없습니다. 💡 예제 아래 예제코드를 보면 익명 클래스를 사용하면 구구절절한 코드가 있지만 람다를 사용하게 되면 간결한 방식으로 처리할 수 있습니다. public ..
동작 파라미터화 코드 전달하기 동작 파라미터화란 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블럭을 의미합니다. 다른 말로는 행위 매개변수화 코드라고도 합니다. 💡 변하는 부분과 변하지 않는 부분을 분리 소프트웨어 주요 설계 원칙 중 하나는 변하는 부분과 변하지 않는 부분을 잘 캐치하여 분리하는 것입니다. 동작 파라미터화를 사용하면 변하는 부분과 변하지 않는 부분을 분리함으로써 유동적인 요구사항에 대해 효과적으로 대처할 수 있습니다. 💡 변화하는 요구사항 - 빨간 사과 필터링 첫번째 요구사항에서 사과 목록 중 빨간색 사과만 필터링하는 기능을 요구한 경우는 아래처럼 하면 가능하지만 추후 요구사항이 변경되어 녹색 사과만 필터링 해달라는 요청이 들어오게 된다면 또 다른 메서드를 구현해야 합니다. publi..
직렬화된 인스턴스 대신 직렬화 프록시 사용을 검토하라 Serializable 인터페이스를 구현하는 순간 생성자와는 별개로 readObject 메서드로 인해 바이트 스트림을 매개변수로 받는 또 하나의 생성자가 생긴다고 하였습니다. 이러한 방법으로 인해 버그와 보안 문제가 발생할 수 있습니다. 하지만 직렬화 프록시 패턴을 사용하여 어느정도 위험을 해소할 수 있습니다. 💡 직렬화 프록시 패턴 바깥 클래스의 논리적 상태를 정밀하게 표현하는 중첩 클래스를 설계해 private static 으로 선언하는 중접 클래스를 만드는데 이 클래스가 바깥 클래스의 직렬화 프록시를 수행합니다. 특징 중첩 클래스의 생성자는 단 하나여야 합니다. 생성자는 바깥 클래스를 매개변수로 받아야 합니다. 생성자의 역할은 단순히 인수로 넘어..
readObject 메서드는 방어적으로 작성하라 readObject 메서드는 실질적으로 또 다른 public 생성자로 볼 수 있습니다. 따라서 readObject 메서드에도 충분한 주의를 기울여야 합니다. 그렇지 않으면 불변식을 깨트릴 수 있습니다. 그렇기 때문에 readObject 메서드 또한 하나의 생성자라 생각하고 방어적으로 작성해야 합니다. readObject 메서드는 매개변수로 바이트 스트림을 받는 생성자라 할 수 있는데 보통의 경우 바이트 스트림은 정상적으로 생성된 인스턴스를 직렬화해 만들어집니다. 하지만 불변식을 깨트릴 목적으로 생성한 바이트 스트림을 건낸 경우 문제가 발생합니다. 💡 불변식을 깨트릴 수 잇는 코드 아래 코드는 Serializable 인터페이스를 선언하고 생성자에서 방어적 복..
- Total
- Today
- Yesterday
- pipeline architecture
- space based architecture
- spring boot excel download paging
- @ControllerAdvice
- pipe and filter architecture
- 서비스 기반 아키텍처
- transactional outbox pattern spring boot
- 람다 표현식
- java ThreadLocal
- microkernel architecture
- spring boot redisson sorted set
- redis sorted set으로 대기열 구현
- spring boot excel download oom
- 트랜잭셔널 아웃박스 패턴 스프링부트
- spring boot 엑셀 다운로드
- JDK Dynamic Proxy와 CGLIB의 차이
- java userThread와 DaemonThread
- transactional outbox pattern
- spring boot poi excel download
- spring boot redisson destributed lock
- polling publisher spring boot
- redis 대기열 구현
- spring boot redisson 분산락 구현
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- service based architecture
- spring boot redis 대기열 구현
- 자바 백엔드 개발자 추천 도서
- 레이어드 아키텍처란
- redis sorted set
- 공간 기반 아키텍처
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |