본문 바로가기

전체 글41

Strategy Pattern - 전략 패턴 이번 포스팅 주제는 GoF 디자인 패턴 중 하나인 Strategy Patten - 전략 패턴 입니다. 게시판의 검색 서비스를 리팩터링 하기 위해 좀 더 좋은 방법이 없을까 찾아보다 책에서 읽은 전략 패턴이 기억나 적용 해보려고 합니다! 리팩터링 전 @Transactional(readOnly = true) public Page searchArticles(SearchType searchType, String searchKeyword, Pageable pageable) { if(searchKeyword == null || searchKeyword.isBlank()){ return articleRepository.findAll(pageable).map(ArticleDto::from); } return switc.. 2023. 9. 3.
모던 자바 인 액션 - 10장 람다를 이용한 도메인 전용 언어 배울 내용 도메인 전용 언어(domain-specific languages, DSL)이란 무엇이고, 어떤 형식으로 구성되는가? DSL을 API에 추가할 때의 장단점 JVM에서 활용할 수 있는 자바 기반 DSL을 깔끔하게 만드는 대안 최신 자바 인터페이스와 클래스에 적용된 DSL에서 배움 효과적인 자바 기반 DSL을 구현하는 패턴과 기법 이들 패턴들은 자바 라이브러리와 도구에서 얼마나 흔히 사용되는가? 서론 많은 개발자들이 프로그래밍 언어도 결국 '언어' 라는 사실을 잊곤 합니다. 언어라는 것은 전달하고자 하는 바를 명확하고 안정적인 방식으로 전달하는 것입니다. 프로그래밍 언어도 결국 언어라는 사실은 프로그램도 결국 사람들에게 이해하기 쉽고 명확한 형태로 만들어져야 한다는 것을 의미합니다. 이해하기 쉬운 .. 2023. 8. 27.
JVM Execution - 자바 코드가 기계어로 번역되기까지 이번 포스팅에서는 JVM이 어떤 식으로 자바 코드를 해석하고 실행하는지 생각하고 정리해보려고 합니다. JVM이 자바 코드를 해석/실행하는 데 이해하기 위한 3가지 개념이 존재합니다. Compilation Execution Just-In-Time Compilation (JIT) 이 3가지 개념에 대해서 알아보겠습니다. Compilation 사람이 작성한 자바 코드는 .java 라는 파일에 작성됩니다. 이 코드는 사람이 알아볼 수 있는 코드입니다. 이제 이 코드를 JVM이 이해할 수 있는 코드인 자바 바이트 코드로 변환할 수 있어야 합니다. javac라는 Java 컴파일러를 통해 .java 파일에 작성된 자바 코드를 JVM이 이해할 수 있는 자바 바이트 코드로 만들어서 .class라는 형식으로 저장합니다. .. 2023. 8. 27.
Java reflection API 이번 포스팅 주제는 reflection이 어떻게 스프링의 강력한 기능들을 지원할 수 있게 해주는지 알아보는 것입니다. 진행 동기 스프링이 지원해주는 편리한 기능들에 감탄하는 경우가 종종 있습니다. 그런데 구체적으로 이런 기능들이 어떻게 가능한 것인지 궁금해져서 ChatGpt나 구글링하면서 찾아보던중 reflection이라는 Java API의 존재에 대해 알게 되었습니다. Java Reflection Api 리플렉션이란 런타임 시 프로그램의 클래스, 메서드, 필드 및 기타 구성 요소를 검사하고 조작할 수 있는 기능입니다. 이 기능을 사용하게 되면 컴파일 시점에 정확한 타입이 결정되지 않아도 다양한 클래스 및 객체와 함께 동작할 수 있게 됩니다. 이렇게 되면 굉장히 유연하고 동적인 코드를 쉽게 작성하는 것이.. 2023. 8. 19.