일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 테스트코드
- EmbeddedId
- Java
- 도메인
- Route53
- DynamoDB
- Spring
- partiql
- compositekey
- markerinterface
- 개발
- javaspring
- secondaryindex
- query
- awscloud
- testresttemplate
- MockMvc
- 로드밸런서
- awscli
- 오류
- AWS
- 스프링테스트
- Springsecurity
- annotation
- filterexpression
- 자바
- 스프링
- IdClass
- 자바스프링
- 다이나모디비
- Today
- Total
목록전체 글 (25)
아장아장 개발 일기
maven 버전 3.8.1 부터 디폴트로 http가 block되어 maven 버전 다운그레이드로 해결하였다. (3.6.2) maven-default-http-blocker (): Blocked mirror for repositories: [blahblah (, default, releases+snapshots)] maven 버전 다운그레이드 방법은 아래 블로그에서 확인할 수 있다. https://dev-youngjun.tistory.com/109
보통 Entity 선언시 프라이머리키를 하나로 선언하지만, 두개의 필드를 복합키로 함께 선언할 수도 있다. 복합키 생성 방식 복합키 생성 방식은 아래와 같이 두개로 나뉜다. @IdClass @EmbeddedId 복합키 생성 조건은 아래와 같다. 복합키는 무조건 public 이어야한다. no-arg constructor(인수가 없는 생성자)가 있어야한다. equals(), hashCode() 메서드 정의를 정의해야한다. Serializable 클래스를 상속해야한다. @IdClass // AccountId public 선언 public class AccountId implements Serializable { private String accountNumber; private String accountTyp..
PartiQL 이란? SQL 호환 쿼리 언어 DynamoDB에서 PartiQL이 지원되기 전에는 DynamoDB API를 사용해야만 데이터를 읽거나 쓰기가 가능했다. PartiQL이 지원되면서 RDBMS에서 SQL을 사용하는 것과 같이 데이터를 다를 수 있게 되었다. DynamoDB에서 데이터 읽기 DynamoDB.DocumentClient의 get, query, scan, batchGet 등의 API를 사용하여 데이터를 읽을 수 있다. scan : 테이블 내의 모든 아이템을 가져옴 (→ 모든 아이템을 조회한 요금으로 청구되기 때문에 유의해야함) query : 테이블 생성시 설정하는 파티션키를 기준으로 아이템을 검색 (기존 API를 사용할 경우) import aws from "aws-sdk"; const..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bazpag/btr3bdIDs82/iRcn4jkxSlXpOF0thFJXd1/img.png)
DynamoDB의 기본적인 특징 프라이머리키를 제외하고 나머지는 스키마가 없다 ⇒ 속성이나 데이터 타입이 미리 지정될 필요 없고, 각각 고유의 속성을 가질 수 있다 대부분의 Attributes속성값들은 scalar 값을 가진다 ex) String, numbers 속성값은 nested attributes(포함된 속성 즉, 중첩속성)을 가질 수도 있다 ex) json, list, map Primary Key 테이블을 만들때는 각각의 아이템을 구분하기 위해 프라이머리 키를 필수적으로 정해야한다. 아래와 같이 두가지 종류의 프라이머리 키 구성이 가능하다. Partition Key Partition Key + Sort Key Partition Key - 두개 이상의 아이템은 동일한 파티션 키 값을 가질 수 없다...
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/AtHlb/btrWopvpuS3/dk0LIGfgUiu0jk9DRkY660/img.png)
https://api.odcloud.kr/api/nts-businessman/v1/status 위의 주소를 호출하면 특정 사업자등록번호의 상태값이 리턴된다. 그런데 막상 호출하면 계속 DATA_MALFORMED 혹은 BAD_JSON 오류가 발생했다. (RestTemplate 사용) 테스트 소스를 작성해 호출해 testRestTemplate으로 호출해보았는데, 잘된다 …?! 흠 … 🤔 왠지 RestTemplate과 testRestTemplate간의 차이를 확인하면 오류의 원인을 찾을 수 있을 것 같아, testRestTemplate의 document를 읽던중…! TestRestTemplate의 경우 Basic authentication headers를 선택적으로 가질 수 있다고 나와있는데에서 힌트를 얻었다..
CrudRepository와 JPARepository의 차이에 대해 배우던 중, 마커 인터페이스(Marker Interface)에 대한 개념이 나와 공부할겸 Baeldung의 관련 게시글을 번역, 정리해보았다. 마커 인터페이스란? 마커 인터페이스라 하면 아래를 의미한다. 내부에 메서드나 상수가 없는 인터페이스 객체에 대해 런타임 타입의 정보를 제공 → 컴파일러와 JVM이 객체에 대해 추가적인 정보를 확인할 수 있음 태깅 인터페이스(tagging interface)라고도 불림 코드 스멜(code smell)을 야기할 수 있어 잘 사용해야함 최근 개발 동향은 같은 용도로 어노테이션 사용을 선호하는 편 → 마커 인터페이스와 어노테이션간의 공통점, 차이점은 아래의 '마커인터페이스 VS 어노테이션'에 서술 JDK..
구현 배경 및 목적 최근에 별도의 회원가입과 로그인없이 없는 프로젝트를 개발하게 되었다. 기존에 사용하던 로직과는 다르게 사용자를 Spring의 JSESSIONID로만 구분하여 GuestUser로 저장, 활용했다. (데모 수준의 서비스라 일정 시간동안만 저장한 데이터가 쌓이면 되고, 해당 데이터를 지속적으로 관리할 필요가 없었다.) JSESSIONID를 활용한 접속 데이터 구분 및 활용은 아래의 세가지 로직을 따른다. Spring의 SecurityContextHolder에서는 Anonymous User를 기본적으로 생성한다.(JSESSIONID 포함) 이렇게 생성된 SecurityContextHolder의 JSESSIONID를 활용하여, 접속자 정보를 GuestUser 테이블에 저장한다. api 호출시,..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bbtgnF/btrSsna0vyD/J1IkQaoWv64Qr1F4EiM6q0/img.png)
프론트에서 http:// 으로 접속시 https:// ssl 처리되어있는 api를 호출할때 mixedContent 에러 발생했다. (http ↔ https 간 호출시 발생하는 에러) 이를 해결하기 위해 프론트에서 http://example.net 으로 접속하면 자동으로 https://example.net으로 리다이렉트 되도록 설정했다.
@NotNull null 값 허용 안함 빈 값은 허용(size혹은 length = 0) @NotEmpty null 허용 안함 size, length = 0 허용 안함 @NotNull의 isValid()를 implementation하여 사용 @Size 어노테이션과 함께 더 정확한 길이/사이즈를 명시하여 사용할 수도 있음 @NotBlank 문자의 공백제거 이후 길이값이 0인지를 체크 isValid()메서드는 null인 값들에 대해 true를 반환하여, @NotBlank가 null값을 허용한다는 인상을 주지만 사실 그렇지 않음 @NotNull의 isValid() 메서드는 @NotBlank의 isValid() 이후에 호출되고, 이는 곳 null 값이 허용되지 않음을 의미 참고 https://www.baeldun..
에러내용 아래의 에러메세지가 뜨며 프로그램 실행에 실패했다. org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.fasterxml.jackson.datatype.jsr310.JavaTimeModule]: Unresolvable class definition; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ser/std/ToStringSerializerBase at org.springframework.beans.BeanUtils.instantiateClass (BeanUtils.java:149) at org.spr..