일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CKA 기출문제
- Elasticsearch
- 정보처리기사 실기
- 코틀린 코루틴의 정석
- AWS EKS
- mysql 튜닝
- 오블완
- IntelliJ
- kotlin querydsl
- aws
- 기록으로 실력을 쌓자
- kotlin
- Java
- PETERICA
- Linux
- kotlin coroutine
- 공부
- CloudWatch
- Pinpoint
- CKA
- Kubernetes
- Spring
- kotlin spring
- AI
- 정보처리기사실기 기출문제
- 정보처리기사 실기 기출문제
- MySQL
- minikube
- 티스토리챌린지
- APM
- Today
- Total
목록Programming (199)
피터의 개발이야기

엑셀다운로드을 하고 있었다. JXLS로 만들면서 템플릿 Excel파일의 경로를 지정하였다. 하지만 로컬에서 실행시키자 에러가 발생하였다. 얼마전 SpringBoot 배포를 War에서 Jar로 변경 하였기 때문이었다. 결론적으로 Jar와 War가 Resource를 참조하는 방식이 달랐다. Jar로 배포된 개발계와 운영계에는 문제가 없었고, local에서는 classpath경로로는 리소스를 참조할 수 없었다. 우선 알아야할 개념은 Path와 Classpath의 차이다. path는 javac와 연관이 있다. 자바환경에서 컴파일 할 때 필요한 것이다. javac가 컴파일하기 위한 모든 라이브러리를 참조하기 위해 윈도우에서는 환경변수로 java홈의 라이브러리 경로를 지정해 준다. javac는 라이브러리 경로에 따..

ㅁ 들어가며 코드 작성 중 간단히 자바 테스트를 진행하였습니다. @SpringBootTest를 가동시켰는데, Failed to load ApplicationContext이 발생하면서 테스트를 진행할 수 없었습니다. 스프링이 특정 value 빈을 생성하려는데, 설정 파일을 찾지 못하엿습니다. 테스트 코드에서 ActiveProfile을 어떻게 지정하는 방법을 찾으면서 그 방법에 대해서 정리해 보았다. 이 원문을 보고 정리하였습니다. @Profile 빈을 특정 프로파일에 매핑합니다. @Component @Profile("dev") public class DevDatasourceConfig 프로파일 이름을 "!dev"로 하면 dev 프로필이 활성화되지 않은 경우에만 활성화가 됩니다. XML로 프로필 선언 Pro..

json관련하여 jackson 라이브러리를 사용하고 있다. jackson에서 재공하는 유용한 어노테이션을 정리한다. Read+ Write Annotations @JsonIgnore public class TestIgnore { @JsonIgnore public long testId = 0; public String name = null; } 위 코드에서 testId는 JSON에서 읽거나 기록되지 않는다. @JsonIgnoreProperties import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @JsonIgnoreProperties({"firstName", "lastName"}) public class PersonIgnoreProperties {..

Spring Boot 애플리케이션에서 서버 측 사용을 위해 Retrofit 및 OpenFeign 선언적 REST 클라이언트를 비교합니다. 먼저 Retrofit 및 OpenFeign을 소개하겠습니다. Retrofit Android 및 Java를 위한 안전 HTTP 클라이언트입니다. HTTP API를 Java 인터페이스로 바꾸는 선언적 웹 서비스 클라이언트입니다. 자세한 내용은 여기를 참조하세요. Feign Client Feign은 선언적 웹 서비스 클라이언트입니다. 웹 서비스 클라이언트를 더 쉽게 작성할 수 있습니다. Feign를 사용하려면 인터페이스를 만들고 어노테이션을 합니다. https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-..

HashMap은 개발의 편의성을 위해 자주 사용한다. MSA로 구성된 서비스에서 더더욱 그러하다. 사용자 정보를 조회하고 다른 서버와 통신하여 구매정보를 구해온다. 키값으로 구매정보 리스트를 HashMap에 저장하여 사용자정보 기준으로 정보를 쉽게 조합할 수 있다. 1. 객채 선언 HashMap map = new HashMap(); 2. 데이터생성 map.put(10, "apple"); map.put(20, "orange"); map.put(30, "banana"); map.put(40, "watermelon"); map.put(50, "dragonfruit"); 3. 데이터 조회 String carName = (String)map.get(10); 4. 데이터 삭제 map.remove(20); 5. 키의..

ㅁ 이전달 1일 전의 날짜인 경우 Exception 처리 Calendar cal = Calendar.getInstance( ); cal.add ( cal.MONTH, -1 ); // 이전달 cal.set(Calendar.DAY_OF_MONTH,1); // 해당 월의 1일로 변경 cal.set(Calendar.HOUR_OF_DAY,0); // 0시 cal.set(Calendar.MINUTE,0); // 0분 cal.set(Calendar.SECOND,0); // 0초 if(request.getApply_date() != null && request.getApply_date().before(cal.getTime())){ throw new Exception("변경은 전달까지만 가능합니다."); }

1. 소개 Spring Scheduling 을 통해 특정 간격으로 코드를 실행할 수 있습니다. 간격은 @Scheduled 어노테이션을 사용하여 지정되기 때문에 일반적으로 간격은 정적이며 애플리케이션 구동하는 동안 변경할 수 없습니다 . 2. @Value boolean Spring Schedule 작업을 조건부로 활성화하는 가장 간단한 방법은 예약 된 작업 내부에서 확인하는 Value 변수를 사용하는 것입니다. 변수는 @Value 로 주석을 달아 일반적인 Spring configuration사용하여 구성 할 수 있습니다 . @Configuration @EnableScheduling public class ScheduledJobs { @Value("${jobs.enabled:true}") private bo..

엔티티의 변수들은 테이블 컬럼과 매핑된다. @Getter @Setter @ToString @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) public class UserEntity { // 고유키 private Long userId; // 페이데이 사용자 ID private Long paydayUserId; // 비밀번호 private String password; // 사용자명 private String name; // 이메일 private String email; // 전화번호 private String phone; } 하지만 비지니스 로직을 수행하기 위해 컬럼에 없는 변수가 발생하기도 한다. 예를 들어 회원가입 시에 패스워드 확인용 변수를 ..

Stream을 사용하면 늘 쓰는 것만 사용하게 된다. 나 같은 경우 filter를 주로 많이 사용하는데, fiter는 중간처리자이다. 곧, Stream을 반환하기에 최종 처리 단계를 더 거쳐야 한다. 특히 단순히 list 중에 값이 있는지만 알기 위해 간단한 방법이 있다. API는 최종 처리 단계 특정 조건을 만족하는 요소들을 얻을 수 있도록 세가지 매칭 메소드를 제공한다. allMatch() 모든 요소들이 주어진 조건을 만족하는지 조사, anyMatch() 모든 요소 중 한 개라도 조건에 만족하는지 조사, noneMatch() 주어진 조건에 모든 요소들이 안 맞는지 조사, allMatch() 사용 시 주의점이 있다. 리스트가 널일 경우 true를 반환한다. 자칫 버그처럼 보이지만 논리학에서 가정이 거짓..