본문 바로가기

분류 전체보기84

로컬 SpringBoot 와 가상 환경 간의 ELK 연동 -1 보호되어 있는 글 입니다. 2023. 4. 27.
Spring Boot에서 Logback 을 활용해서 Log 남기기 Logback 이란 log4j 이후에 출시된 Java 기반 Logging Framework 중 하나로 SLF4j 의 구현체이고 Spring Boot 라면 기본적으로 포함되어 있다. log4j와 성능을 비교했을 때도 logback이 월등하다는 평가가 많다. Logback 설정 방법 1. .yml(.properties) 파일 생성. 1-1 프로필 설정 # 프로필 설정 spring.profiles.active=local #spring.profiles.active=dev #spring.profiles.active=prod #루트 레벨(전체 레벨) 전체 로깅 레벨 지정 logging.level.root=info *dev, prod 등의 환경을 별도로 선언할 수 있고 프로필 마다 다른 로그 설정을 적용할 수 있다... 2023. 4. 24.
QueryDsl - Case When과 Concat 활용법 CASE WHEN QueryDsl에서 동적쿼리를 사용하고 싶을 때, Decode를 사용하고 싶을 때 활용되는 Case When은 크게 두가지로 사용할 수 있다. 1. CaseBuilder를 직접 넣는 방법 .select(Projections.bean(Member.class, member.name, new CaseBuilder() .when(member.age.lt(10)).then("어린이") .when(member.age.lt(20)).then("학생") .when(member.age.lt(30)).then("청년") .otherwise("어른") .fetch(); 2. CaseBuilder를 임의의 변수로 선언한 뒤 변수를 넣는 방법 Expression caseByAge = new CaseBuilde.. 2023. 4. 11.
QueryDsl 에서는 Null 처리를 어떻게 하나요? Coalesce Query를 직접 쓴다면 뭐 DBMS에 따라 문법이 조금 다르겠지만 오라클의 경우 NVL이 바로 떠오르텐데 QueryDsl에서는 NVL이나 IF NULL 대신 Coalesce를 쓴다. 단순한 조회 시 문법은 아래와 같다. .select( QueryDsl 전용 엔티티(dto)의 참조변수.칼럼명.coalesce("NULL일시 표출하고 싶은 메세지").as("가명") ) .from(QueryDsl 전용 엔티티(dto)의 참조변수) .fetch(); 위 문법의 예시는 아래와 같다. .select( codeDto.codeName.coalesce("아무것도 없네요").as("codeName") ) .from(codeDto) .fetch(); 여기서 포인트는 as 로 가명을 지정해두는 것인데 가명을 .. 2023. 4. 10.
Springdoc-openapi-ui로 Swagger3 사용하기 Swagger란? Open Api Specification(OAS)를 위한 프레임워크이다. API들이 가지고 있는 스펙(spec)을 명세, 관리할 수 있는 프로젝트/문서 API 사용 방법을 사용자에게 알려주는 문서 Springboot에서 Swagger를 사용하면, 컨트롤러에 명시된 어노테이션을 해석하여 API문서를 자동으로 만들어준다. 참고로 Swagger는 Java에 종속된 라이브러리가 아니다. URL에 /swagger-ui.heml으로 접근하면 swagger가 만들어주는 페이지에 접근할 수 있다. 공식 사이트 Swagger를 설정하는 위한 라이브러리는 2가지가 있다. Spring-Fox, Spring-Doc 2가지 중에 사용하면 된다. Spring-Fox 약 2015년정도에 나온 라이브러리다. 202.. 2023. 2. 14.
최신 Spring Security 사용법 - SecurityFilterChain Spring Security 5.7.0-M2 부터 WebSecurityConfigurerAdapter가 Deprecated 되었고 기존에 security 예외 url을 설정하던 antMatchers는 아예 삭제되었다. 하지만 아직까지 수많은 블로그들은 예전 Spring security 버전을 기준으로 글이 쓰여져있고 현재 최신 버전의 업데이트 사항은 영문 공식문서에 존재하기 때문에 어떻게 다가서야하는지 난감할 수 있다. 해서 업데이트된 내용들과 어떻게 사용해야 하는지 간략하게 공유하려고 한다. 일단 Spring Security의 본체라고도 할 수 있는 Configuration파일에는 크게 두가지 configure를 설정하게 되는데 바로 WEB 과 HTTP이다. 아래 블로그에서는 Spring Securit.. 2023. 2. 9.
QueryDSL에서 Date 타입들의 Parsing and Comparing (StringTemplate, DateTemplate, & Expressions) 여러분은 무슨 이유에서인지 날짜를 비교해야 한다. 하지만 QueryDSL의 자체적인 함수로는 날짜 타입의 변환이 어렵다. 그래서 사용되는 것이 StringTemplate과 DateTemplate, 그리고 Expressions이다. 만약 가지고 있는 파라미터의 Date 타입이 java.util.Date인데 Date라는 타입 자체를 버리지 않으면서 한국에서는 흔한 locale인 0000년-00월-00일 00시:00분:00초 라는 포맷을 가지도록 변환해주고 싶다면 아래와 같이 활용하면 된다. DateTimeTemplate dateTime = Expressions.dateTimeTemplate(LocalDateTime.class, "DATE_FORMAT({0}, {1})", QueryDSL전용 dto.칼럼명 ,.. 2023. 2. 3.