본문 바로가기

분류 전체보기99

[Spring] auto DI, 생성자 주입 방식(Construct Injection) 스프링이다 스프링 부트를 이용해서 개발을 할 때 의존성 주입(DI-Dependency Injection)을 자주 사용하게 됩니다. 이때 보통 @Autowired을 이용해서 의존성 주입(DI)을 합니다. 스프링에서 지원해주는 자동 injection은 3가지 방식이 있습니다. 필드 injection setter injection 생성자 injection 각각을 간단한 코드로 먼저 살펴보겠습니다. 회원(Member)을 관리하는 service에서 DB 접근 로직이 있는 회원 repository(MemberRepository)를 DI를 통해 사용한다는 가정으로 소스를 작성해 보겠습니다. field injection(필드 injection) 필드 injection은 class에 선언한 필드에 @Autowired를 .. 2020. 1. 29.
[Java] was가 여러개/멀티스레드 환경에서 중복 id체크 어떤 문제? 일반적으로 운영 환경에서는 was가 여러 개인 환경이 대다수입니다. (대다수가 아니라 99% 정도?) was가 여러 개 이거나 멀티스레드 환경에서 만약 동시에 회원가입을 한다면 id 중복체크를 어떻게 해야 할까요? 아주 간단한 팁(?)을 공유해보겠습니다. 소스코드 아래와 같은 servicer가 있다고 가정해 보겠습니다. @Service @Transactional(readOnly = true) public class MemberService { @Autowired private MemberRepository memberRepository; /** * 회원 가입 * * @param member * @return */ @Transactional public Long join(Member membe.. 2020. 1. 29.
[ELK] Elasticsearch의 데이터 검색 - Query DSL Query DSL(Query Domain Specific Language)은 ES의 document를 검색할 때 사용합니다. Query DSL에 대해 간단하게 정리해 보도록 하겠습니다. 중간 내용부터 document를 docs로 줄여서 표기하였습니다. Query and filter Context ES는 검색 결과에 관련성 점수(relevance score)를 매기고 점수별로 정렬하여 각 document가 쿼리와 얼마나 일치하는지 측정하게 됩니다. 이 관련성 점수는 _score meta-field에 반환되며 양의 부동 소수점 숫자값을 가집니다. 이 숫자가 높을수록 높은 관련성을 가지게 됩니다. Query context Query context에서 쿼리 절은 '이 document가 이 쿼리 절과 얼마나 일치.. 2020. 1. 19.
[ELK] Elasticsearch의 데이터 검색 - search API ES의 데이터 검색 방법에 대한 내용을 정리해 보았습니다. 데이터 검색 테스트를 하기 위해 ES에서 제공해주는 샘플 데이터를 이용해 보겠습니다. 링크에서 accounts.json 파일을 다운로드하고 ES에 insert 해보겠습니다. bulk insert 대량에 데이터를 insert 할 때는 bulk insert를 이용해야 합니다. 정확히 얘기하자면 json 타입으로 정리된 파일의 데이터를 insert 해보도록 하겠습니다. bulk insert를 이용하면 아래와 같이 insert 된 데이터들에 대한 정보가 출력됩니다. curl -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary @accounts.json -H 'Content-Type:appli.. 2020. 1. 19.