전체 글91 Spring boot embedded server 의 default 포트 변경 기본적으로 Spring Boot 애플리케이션은 임베디드 톰캣 서버의 포트 8080으로 동작한다. Spring Boot의 기본 임베디드 서버 포트를 다른 포트로 변경할 수 있는 몇 가지 방법에 대해서 기록한다. 포트 충돌 방지를 위해서 임의의 사용 가능한 포트를 사용하려면 server.port=0으로 설정한다. 방법 1) properties(. yml) 파일에서 기본 포트 변경 Spring Boot에서 기본적으로 참조하는 application.yml(.properties) 파일 설정으로 기본 포트를 변경할 수 있다. # application.properties server.port=9090 # application.yml server: port:9090 방법 2) 코드상에서 기본 포트 변경 코드상에서는 기.. 스프링부트 2023. 9. 16. Java - 람다 표현식(lambda expression) - 4개의 주요 functional interface Java8부터 도입된 람다 표현식과 관련하여 새로운 패키지인 java.util.function 이 도입되었다. 해당 패키지 안에는 대부분 함수형 인터페이스가 정의되어 있으며 특히 컬렉션 프레임워크와 스트림 API와 함께 많이 쓰인다. 그 말은 컬렉션 프레임워크와 스트림 API와 함께 람다 표현식도 많이 쓰인다는 것과 동일하겠다. JDK8부터 기본적으로 제공되는 java.util.function 패키지의 기본 함수형 인터페이스의 Supplier, Consumer, Function, Predicate에 대해서 기록한다. Supplier Supplier 인터페이스는 파라미터가 없는 T 타입의 객체를 리턴하는 get() 추상 메소드를 가지는 함수형 인터페이스이다. @FunctionalInterface publi.. 자바 2023. 9. 15. Java - 람다 표현식 (lambda expression) 개요 Java SE 8 부터 람다 표현식 이라는 개념이 도입되었다. 람다 표현식은 Functional Interface 를 구현하는 구현체라고 보면 좋을 것 같다. 혹은 Functional Interface의 익명 클래스 인스턴스를 생성하는 간단한 방법이라고 봐도 좋을 것 같다.이번 포스팅에서는 람다 표현식에 대한 소개를 하고자 한다. 람다 표현식 작성 세 단계람다 표현식을 작성할 때는 아래의 세 단계에 따라 작성하면 도움이 될 것 같다.작성하려는 람다 표현식의 유형 식별하기 (Functional Interface)구현할 올바른 메소드 찾기메소드 구현하기람다 표현식을 작성할 때 고려할 위 3가지 단계에 따라서 차근 차근 알아보자. Functional Interface (함수형 인터페이스)람다 표현식의 유형에는.. 자바 2023. 9. 10. Spring에서 Jasypt를 이용하여 설정 정보 암호화 하기 Spring의 application.yml(.properties)과 같은 설정 정보 파일에는 데이터 베이스 연결 정보나 API 키, 비밀번호와 같은 민감한 정보를 설정해야 하는 경우가 있다. 이러한 민감한 정보를 평문으로 설정하게 되면 간혹 정보가 노출되었을 때 심각한 문제를 초래 할 수 있다. Jasypt 라이브러리를 사용하여 어플리케이션의 설정 정보를 암호화하여 민감한 정보를 보호할 수 있다. 간단한 예제 코드와 함께 spring에서 Jasypt 라이브러리를 사용하는 방법에 대해서 기록한다. Jasypt for Spring boot Jasypt는 Spring boot 2.X 버전과 3.X 버전과 통합을 지원한다. 상세한 문서는 jasypt-spring-boot git을 참고하면 도움이 된다. 프로젝트.. 스프링부트 2023. 9. 9. Spring SSE (Server Sent Event) 사용 방법 SSE (Server Sent Event)는 웹 어플리케이션에서 실시간 업데이트를 제공하는 데 사용되는 웹 기술 중 하나이다. Spring에서는 Spring MVC에서 사용되는 SseEmitter 클래스를 제공하여 손쉽게 SSE 스트림을 생성하고 클라이언트에게 이벤트를 푸시할 수 있도록 한다. 이를 통해 클라이언트가 연결을 유지하면서 서버로부터 데이터를 지속적으로 수신할 수 있도록 한다. 이번 포스팅에서는 Spring에서 SSE를 사용하는 방법에 대해서 기록한다. SSE (Server Sent Event) 특징 서버 -> 클라이언트 단방향으로 이벤트를 스트리밍 할 수 있도록 대부분의 브라우저에서 채택한 사양 이벤트 데이터는 UTF-8로 인코딩된 텍스트 데이터 스트림 이벤트 데이터 형식은 줄 바꿈으로 구분.. 스프링부트 2023. 9. 9. Spring Boot GraalVM Native Image 빌드 하기 GraalVM 네이티브 이미지는 컴파일된 자바 애플리케이션을 미치 처리하여 생성할 수 있는 독립 실행형 실행 파일이다. 도커 이미지와 같은 이미지를 의미하는 것이 아니다. 네이티브 이미지는 일반적으로 메모리 사용 공간이 더 작고 JVM 이미지 보다 빠르게 시작할 수 있다는 장점이 있다. 컨테이너 이미지를 사용하여 배포하는 애플리케이션에 적합하며, 특히 서비스형 기능(FaaS) 플랫폼과 결합할 때 유용하다. GraalVM 네이티브 이미지는 완전한 플랫폼별 실행파일이다. 이번 포스팅에서는 Spring Boot 의 GraalVM 네이티브 이미지 빌드를 위해서 지원되는 사항에 대한 공식 문서를 정리하고자 한다. JVM 배포와 차이점 애플리케이션의 정적 분석은 메인 엔트리 포인트에서 빌드 시 수행된다. 네이티브 .. 스프링부트 2023. 9. 4. SDKMAN - 개발 도구 손쉽게 관리하기 SDKMAN 은 Software Development Kit MANager 의 약자로써 유닉스 환경에서 여러 소프트웨어 개발 키트를 손쉽게 관리할 수 있는 CLI 도구이다. SDKMAN 설치와 사용법에 대해서 간단히 정리하고 가겠다. SDKMAN Install macOS, Linux 및 Windows(WSL) 과 같은 UNIX 환경에서 SDKMAN 설치는 매우 간단하다. BASH, ZSH 쉘 모두 호환이 된다. $>curl -s "https://get.sdkman.io" | bash $>source "$HOME/.sdkman/bin/sdkman-init.sh" 기본적으로 $HOME 경로 하위의 .sdkman 디렉토리에 설치 된다. 설치 완료 후 bash 쉘을 사용하는 경우 $HOME/.bashrc 혹은 .. 카테고리 없음 2023. 9. 2. spring boot resource 파일 access spring boot 에서 resource 디렉토리에 있는 모든 파일은 빌드 시 application root 에 복사 됩니다. 이번 포스팅에서는 spring boot 에서 resource 파일을 access 하는 3가지 방법을 소개합니다. ResourceLoader ClassPathResource 생성자 @Value annotation 샘플 코드는 test 코드이며 test 디렉토리의 resource 에 있는 샘플 파일 경로는 아래 이미지와 같습니다. ResourceLoader Spring boot 에서 ResourceLoader 는 자동 주입됩니다. ResourceLoader를 통해서 resource 파일을 로딩 하는 경우에는 getResource() 메소드에 넘겨주는 파라미터에 prefix 를 붙여.. 스프링부트 2023. 8. 27. jdk pattern matching for switch jdk 17 이전 릴리즈 에서는 switch 문의 선택자 표현식은 숫자, 문자열, Enum 상수로만 평가되었고 case 레이블은 상수만 지원을 하였습니다. jdk 17 릴리즈 부터는 switch 문의 선택자 표현식은 모든 타입이 될 수 있으면 case 레이블에는 패턴이 지원되도록 개선 되었습니다. 따라서 switch statement(문) 혹은 switch expression(표현식) 의 case 레이블에 pattern matching 을 적용할 수 있게 되었습니다. 이번 포스팅에서는 jdk pattern matching 을 swich 문과 표현식에 적용하는 방법을 기술합니다. jdk pattern matching for switch 이력 jdk 17 에서 preview 기능으로써 JEP 406 에서 제.. 자바 2023. 8. 26. jdk pattern matching for instanceof pattern matching 은 객체가 특정 구조를 가지고 있는지 테스트한 다음 일치하는 경우 해당 객체에서 데이터를 추출하는 작업을 포함합니다. 이번 포스팅에서는 instanceof 연사자에 pattern matching 을 적용 하는 방법에 대해서 기술합니다. jdk pattern matching jdk 14 버전에서 instanceof 연산자에 대한 pattern matching 기능이 JEP 305 를 통해 preview 기능으로 처음 제안됨 jdk 16 버전에서 instanceof 연산자에 대한 pattern matching 기능이 JEP 394 를 통해 정식 기능으로 릴리즈됨 jdk 17 버전에서 switch 표현식과 구문에 대한 pattern matching 기능이 JEP 406 을 통해 .. 자바 2023. 8. 26. macOS (silicon) minikube 설치하기 처음 kubernetes 를 접했을 때 어려운 부분은 실습 환경을 구성하는 일이다. minikube 는 로컬환경에서 kubernetes 를 실습할 수 있는 단일 클러스터 환경을 구성할 수 있는 도구입니다. 이번 포스팅에서는 macOS (silicon) 환경에서 minikube 를 설치하는 방법에 대해서 기록합니다. 사전조건 최소 2 CPU 최소 2GB 메모리 최소 20GB 디스크 공간 인터넷 환경 Docker, QEMU, KVM, VirtualBox, VMWare 와 같은 컨테이너 혹은 가상머신 관리 도구 homebrew 포스팅 작성 시점의 kubernetes 최신 버전은 1.28.0 입니다. 설치 minikube 설치 방법에는 설치 패키지를 다운로드 하여 설치하는 방식과 homebrew 를 통해서 설치.. 쿠버네티스 2023. 8. 24. macOS (apple silicon) 에 kubectl 설치하기 kubectl 은 kubernetes API 를 사용하여 kubernetes 클러스터의 control plane 과 통신을 지원하기 위한 CLI (명령줄도구) 입니다. kubernetes 를 사용하기 위해서는 kubectl 명령어 사용법을 익히는 것도 중요한 부분입니다. 이번 포스팅에서는 macOS 에 kubectl 을 설치하는 방법에 대해서 기술합니다. 참고로 포스팅을 작성하는 시점 kubernetes 최신 버전은 1.28.0 입니다. kubectl 버전 kubectl 은 kubernetes API 를 통해서 상호 작용하기 때문에 kubernetes 의 버전과 연관이 있습니다. 기본적으로 kubernetes cluster 의 마이너 버전 차이가 1 이내에 kubectl 버전을 사용해야 합니다. 예를 들.. 쿠버네티스 2023. 8. 24. 이전 1 ··· 3 4 5 6 7 8 다음 💲 추천 글