java

· Spring
📑 개요신규 프로젝트 작업을 해야 하는 상황이 있어서 이번 기회에 spring boot, kotlin과 vue 최신 버전을 기준으로 초기 세팅 작업을 했고 이 과정을 기록하려고 한다. 버전에 따라 없어진 내용도 존재하고, 추가된 내용도 존재하니 체크를 해보는 게 좋을 거 같다. 아래의 이미지는 이번에 프로젝트를 작업 하면서 만든 패키지 구조이다. (참조용) 📑 기술 스택BackEndjava 21자바의 미래라고 불리는 virtual thread를 사용해보고 싶어서 버전을 21 이상을 사용하려고 생각했고 21이 LTS 버전이라서 사용하게 되었다.kotlin 1.9.23spring boot 3.2.4DGS 8.6.0넷플릭스에서 개발한 GraphQL 프레임워크이다. 예전에 한번 내용일 살펴보고 테스트를 해봤..
· Java
⚡ 개요 java 에서 날짜를 특정 타입으로 변환을 할 때가 존재한다. 자주 사용을 하는 변환 함수에 대해서는 함수를 쓰면서 바로 사용을 하는 경우도 있지만 자주 사용하지 않는다면 내부 소스를 찾아보거나 검색을 하게 된다. (최근에 날짜 변환에 대해서 기억이 잘 나지 않아서 검색을 좀 자주 하게 되었는데 정리를 좀 해놔야겠다고 생각을 했다.) 자바에서 사용하는 함수에 대해서 정리를 하겠지만 함수를 까보면 어느 정도 다른 언어에서도 충분히 비슷한 함수가 존재하거나 없으면 만들어서 사용 가능할 거라고 생각을 한다. ⚡ 날짜 변환 사용 방법 간단하게 내가 사용하는 방법에 대해서만 정리를 하려고 한다. 참고로 LocalDateTime , LocalDate, LocalTime 은 내부적으로 변환에 대해서 지원하는..
· Spring
⚡ 개요 Spring boot 2.6.x 버전이 2024년 2월달 부로 지원이 종료가 된다. :( 아직 까지는 크게 문제가 없지만 결국은 버전을 올려야 하며, 내부 버전을 마이그레이션을 하기로 생각했다. 아마 추가적으로 다른 내용들도 정리를 하고 있지만 가장 먼저 QueryDsl 의 Dialect의 사용 방식이 변경돼서 이 부분에 대해서 정리를 하려고 한다. 공식 문서 및 관련 자료를 찾아도 방법에 대해서 공유를 해놓은 사람이 없어서 내부 클래스를 분석해서 사용 방법을 재정의 했다. 이에 대한 내용을 정리해보려고 한다. 📚 버전 정보 현재 테스트를 할떄 필요한 버전 정보만 공유하도록 하겠다. Spring boot 2.6.x ==> Spring boot 2.7.18 ==> Spring boot 3.0.18..
· Java
⚡ 개요 java 에서 String을 사용할 때 분명 null 또는 빈 문자열 체크를 무조건 한 번은 하게 된다. 이때 사용하는 isEmpty 와 isBlank 에 대해서 내부 동작은 어떻게 하는지 그래서 어떤 차이가 있는지 한번 정리하려고 한다. 매우 간단한 내용이 될것이다. 하지만 자주 사용하니 혹시 내가 놓친 부분이 있다면 한 번쯤 봐도 좋을 듯싶다. 📎 isEmpty String 클래스 내부에 오버라이딩 되어있는 isEmpty 메소드이다. @Override public boolean isEmpty() { return value.length == 0; } 위의 내용과 같이 별 내용이 없다. 문자열의 길이가 0 인경우 true를 리턴해주는 메소드 이다. 📎 isBlank isBlank 의 경우는 ja..
· Spring
⚡ 개요 리눅스 운영 서버에서 운영중인 웹 서비스에서 SFTP 접속 관련 이슈가 발생했고, 원인 분석 및 수정을 어떻게 했는지 내용을 정리 하려고 한다. ⚡이슈 및 수정 내용 정리 이슈가 발생 했고 운영 서버의 로그를 확인해본 결과, connection 관련 null 이라는 Exception만 찍히고 있었다. 😭 해당 부분의 로그 설정이 printStackTrace 로 되어 있었고, 이로 인해서 리눅스 환경에서 로그를 찍지 않고 리턴된 값에 대해서만 찍고 있었다. 물론 개발 서버에서 SFTP 관련 테스트 및 로그 보강등 추가적인 작업을 했지만 운영 서버에 반영을 할 수 없는 상황이라서 connection 관련해서 null이 반환 되는지 찾아보고 처리하는 방법 밖에 없었다. 내부에서는 JAVA에서 SFTP..
· Java
⚡개요 Wrapper Class에 대해서 기본적인 내용을 체크하던 도중에 객체를 비교하는 과정에서 추가적인 내용을 확인해서 내용을 정리해 놓으려고 한다. ⚡ Wrapper Class 생성 방법 기본적인 생성 방법 일반적으로 new 를 통한 객체를 생성하는 방법이 있다. 하지만 이 방법은 버전에 따라서 사용을 할 수 없도록 되어있다. 심지어 사용할수 있는 버전에서 조차 "불필요한 박싱"이라는 문구가 발생한다. 일부 Wrapper Class에 대해서도 확인해 보았지만, 모두 동일한 것으로 파악되며, 대신 valueOf()를 사용하도록 권장하고 있다. (해당 부분이 왜이렇게 바꼇는지는 밑에서 설명 하도록 하겠다.❗❗❗) 이 또한 불필요한 박싱이라는 경고가 뜨게 된다. 여기까지는 대부분 알고 있는 내용이며 크게..
· Java
⚡ Stream 이란? Java Stream은 자바 8부터 추가된 기능으로, 컬렉션과 배열과 같은 데이터 소스에서 요소를 처리하고 다양한 연산을 수행할 수 있는 API이다. Java Stream API는 함수형 프로그래밍의 개념을 기반으로 만들어졌기 때문에 람다식과 함께 사용할 수 있다. Java Stream은 크게 생성, 중간 연산, 최종 연산으로 구성된다. 생성 연산은 Stream 객체를 생성하는 역할을 하고 중간 연산은 Stream 객체의 요소를 처리하거나 필터링하는 등의 작업을 수행하며 최종 연산은 Stream 객체의 요소를 이용하여 결과를 도출하는 작업을 수행한다. Java Stream API에는 다양한 중간 연산과 최종 연산이 제공되며 이를 활용하여 데이터를 처리하고 다양한 연산을 수행할 수 ..
· Java
⚡ 개요 보안이 중요해지고 있고, Tomcat 구동시 기본적으로 보여주는 error 페이지를 보여주면 안된다. 우리가 개발하고 배포하는 정보가 포함되어 있기때문이다. 에러 페이지를 내가 설정한 페이지로 변경하는 방식에 대해서 정리 하려고 한다. ⚡ 에러 페이지 설정 및 설명 1. spring boot를 사용하지 않고, freamWork만 사용하고 있다고 가정을 하면 web.xml에서 설정이 가능하다. (보통의 레거시 시스템들을 보면 이렇게 설정 되어 있다.) ❗ 확인 사항 1. error-code를 설정하지 않으면 실제 해당 에러가 발생 했을때 정상적으로 페이지가 호출되지 않는다. 2. location 설정시, 맨앞에 "/"를 하지 않은 경우 정상적으로 페이지가 호출되지 않는다.
일단 내용을 정리하기에 앞서 내가 추천받은 책을 한 권 소개를 하려고 한다. 추천해 주신 분은 같이 개발하시는 선임님께서 먼저 읽어 보고 추천을 해주셨고 구매를 하게 되었다. 책의 내용을 간략하게 소개하자면 책을 지은 사람은 마틴 파울러라는 ThougthWorks의 수석 과학자이며 우리가 개발을 하면서 한 번쯤은 들어본 IOC(제어 역전)와 DI(의존성 주입)의 용어를 대중화시킨 분 이시다. 😲 리팩터링에 대해서, 리팩터링의 이유, 리팩터링을 해야 할 곳을 찾고 싶다면?, 리팩터링 실습 등 내용이 굉장히 알차다. 물론 책을 한번 쭉 정독했다고 해서 개발된 소스를 다이내믹하게 수정한다거나 바로 눈에 띄는 곳이 별로 없을 수 있지만 개발을 하면서 "아 이거 책에 있었던 거 같은데 한번 봐야겠다." 하면서 계..
HaeTae
'java' 태그의 글 목록