Taes-k DevLog
  • 몰라도 되는 스프링
  • Refactoring (2판)
  • Review
  • 요령과 기본(Spring)

Spring, java connection에 대한 고찰

개요 MSA 프로젝트를 진행하면서 Java, Spring에서 제공하는 다양한 Connection tool들을 이용해 통신을 진행하는데, 이때 실제 Connection들이 어떻게 일어나고 있는지 알아보도록 하겠습니다. Connection Tomcat WAS 와 연결할때는 기본적으로 소켓 통신으로 Connection을 설정합니다. Connection close & timeout...

27 Nov 2019

Spring restTemplate connection reset error

에러 환경 Java8 Spring boot 2.1.7.RELEASE Spring batch 에러 상황 [원부-배치-속성] 인스턴스에서 배치 종료에 대한 메시지를 MS-Teams 채널로 보내는 상황에서 에러 발생, 시작시에는 문제 없음. 배치 시작시 1회 connection 이후, 1시간뒤 connection이 일어날때 에러 발생...

25 Nov 2019

Spring annotation @Component, @Configuration

개요 Spring 프로젝트를 진행하면서 Bean으로 등록하기위해 @Component, @Configuration, @Controller … 등의 여러 어노테이션을 사용합니다. 그중에서도 @Component와 @Configuration은 사용상에 있어 차이가 있는데, 정확히 어떠한 차이로 이 어노테이션들을 구분하여 사용하는지 알아보도록 하겠습니다. Spring Bean Bean : Spring...

22 Nov 2019

Mysql hint

(이 내용은 mysql 5.7 version 기준으로 작성되었습니다.) Optimizer Hint 쿼리실행 최적화를 위해 선작업으로 징행되는 옵티마이저에게 specific한 쿼리 플랜을 정해주기 위하여 설정을 해 줄수 있습니다. 이때 사용되는것이 Optimizer hint이며, 쿼리 구문별로 정의하는 hint를 통해서 Optimizer를 control...

22 Nov 2019

칼럼기반 DB, Vertica

칼럼기반 Database 학번 이름 전화번호 101 김하나 010-1111-1111 102 이둘 010-2222-2222 103 석삼 010-3333-3333 위와같은 예제 데이터 테이블이 있다고 가정할때, Row base/ Column base DB가 각각 어떤식으로 데이터를 저장하는지 알아보도록 하겠습니다. 로우 기반 DB data...

20 Nov 2019

Spring restTemplate UrlEncoding

개요 RestTemplate을 사용하면서, request 파라미터를 설정시에 URL Encoding을 통해서 파라미터를 넘기는 케이스가 자주 있으실겁니다. 하지만 이때, 주의해야할 사항이 있습니다. 문제의 코드 String accessUrl = String.format("%s?keyword=%s&attribute=%s&testTarget=quality", wmpSearchApiUrl, URLEncoder.encode(keyword,"UTF-8"), URLEncoder.encode(attributeElement,"UTF-8")); RestTemplate restTemplate = new RestTemplate(); JsonNode jsonNode...

15 Nov 2019

MySql Explain (실행계획)

MySQL Explain Explain을 실행했을시 다음과같은 화면이 보여집니다. 각 칼럼이 의미하는 내용들을 확인해보도록 하겠습니다. id 쿼리에 포함된 각 select 문에 대한 순차 식별자 select 항목을 구분하는 번호 동일한 ID의 경우 위에서 아래로 진행됩니다. table 항목이 “derived2”인경우...

11 Nov 2019

Spring dbcp(Hikari pool) wait-timeout connection error

에러내용 com.zaxxer.hikari.pool.ProxyConnection : HikariPool-1 - Connection com.mysql.cj.jdbc.ConnectionImpl@25ec8a5c marked as broken because of SQLSTATE(08S01), ErrorCode(0) com.mysql.cj.jdbc.exceptions.CommunicationsException: The last packet successfully received from the server was 3,752,361 milliseconds ago. The last packet sent successfully to the server...

08 Nov 2019

Spring Feign으로 http 통신하기

Feign Netflix 에서 개발한 선언적 http 통신을 위한 오픈소스 입니다. 선언적 통신을 통해 http 통신 코드를 확연하게 줄여줄수 있다는 장점이 있습니다. 현재는 Spring cloud 에서 공식 라이브러리로 지원하고 있습니다. netflix-feign의 last-update는 2016년 7월이며(v8.18), Spring cloud...

05 Nov 2019

spring boot 2.2.0 release

들어가기에 앞서 2.2.0.RELEASE 버전은 JNDI 설정에 문제가 있습니다. JNDI를 사용하고 있는 환경의 경우 DB 연결에 문제가있어 배포에 실패하는 현상이 있습니다. 2.2.1.RELEASE 버전에서 위의 문제가 해결되었습니다. Spring boot 2.2.0 realease 주요 업데이트 사항 정리 JMX now...

04 Nov 2019

다시세우는 테스트코드 작성 전략

개요 사실 해당내용에 대해서는 정확한 답변을 드리기가 어렵습니다. 사실 모든 개발내용에 대해 테스트를 진행 할 수 있다면 더할나위없이 좋지만, 그에대한 트레이드 오프는 분명하기때문에 실무에서는 모든 내용에대해 테스트를 진행한다는것은 쉬운일이 아닐것입니다. 그럼에도 불구하고 개발을 함에 있어서...

27 Sep 2019

java.util.date를 사용하지 말아야하는 이유

java.util.date 를 사용하지 말아야 하는 이유 time zone 이 없음 format이 없음 캘린더 시스템이 없음 1900년 후 몇년은 두자리수로 표현됨, 1900년 이전 처리와 함께 별도의 처리과정 사용됨 월의 비직관적인 표시 (0 - 1월, 11- 12월)...

25 Sep 2019

mysql count(*) vs count(column)

개요 SQL 에서 쿼리의 실행 결과 로우의 수를 조회하고자 할때 count()함수를 사용하게 됩니다. 이때, count(*)을 쓰는 경우와 count(column-name)을 사용하는 경우가 어떻게 다른지 확인해보도록 하겠습니다. count(*) vs count(name) 예시 테이블) id name 1 김하나 2 이둘...

10 Sep 2019

spring transaction propagation

Transaction propagation(전파) Transaction 사용시 트랜잭션이 겹치게될때 (트랜잭션 내에서 다른 트랜잭션 서비스를 호출시) 트랜잭션처리를 어떻게 해야하는지에 대해 각각의 트랜잭션마다 propagation(전파범위) 옵션을 설정하여 지정해줄수 있습니다. 종류 REQUIRED REQUIRES_NEW SUPPORTS NOTSUPPORTED MANDATORY NEVER NESTED propagation 설정 일반적으로 spring에서...

05 Sep 2019

DDD (Domain Driven Design) 도메인 주도 설계

도메인 모델 도메인 모델은 사용 관점에따라 헷갈릴수 있습니다. 도메인 모델이란 특정 문제와 관련된 모둔주제의 개념 모델로서, DB관점이 아닌 현실 세계에 빗대어 정의할수 있는 객체들간의 모델이라고 의미 할 수 있을것 같습니다. 도메인모델을 구성하기위해서는 핵심 구성요소들을 정의하고...

04 Sep 2019
Previous
Next
cobura12@gmail.com