일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- secondaryindex
- 자바
- 오류
- IdClass
- EmbeddedId
- awscli
- partiql
- Spring
- 다이나모디비
- 스프링테스트
- testresttemplate
- markerinterface
- query
- filterexpression
- javaspring
- awscloud
- MockMvc
- 로드밸런서
- 개발
- 도메인
- DynamoDB
- compositekey
- Springsecurity
- AWS
- 스프링
- Java
- 자바스프링
- 테스트코드
- annotation
- Route53
- Today
- Total
목록Spring (14)
아장아장 개발 일기
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..
![](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 호출시,..
@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..
IntelliJ에서 프로그램을 실행시켰을땐 잘 찾아지던 file이 Jar파일로 만든후 해당 파일을 찾으려하면 FileNotFound Exception이 발생했다. 검색해보니 이미 여러 사람이 비슷한 오류를 경험한 듯 했다. 왜 IntelliJ에서는 잘 찾아지던게 Jar로 실행시키면 안되는건지 찾아보니, Jar 파일 안의 리소스들은 file이 아닌, stream이기 때문 이라고 한다. (기존 소스) ClassPathResource resource = new ClassPathResource(FilePath); String someText = new String(Files.readAllBytes(Paths.get(resource.getURI()))); (변경후) InputStream resourceStream..
스프링 클래스를 빈등록 할때면 component, service, repository 어노테이션 중 어떤 걸 써야할지 헷갈렸습니다. repository는 비교적 다른 두개와 구분하기 쉬웠는데, component와 service 어노테이션이 특히 헷갈리더라구요. 이번에 baeldung에서 셋의 차이를 간략하게 다룬 글을 찾아서 한번 정리해보았습니다. @Component 1. 스프링이 관리하는 컴포넌트로 등록됨 2. 스프링은 @Component로 등록된 bean만 인식함3. @Service와 @Repository도 @Component 어노테이션을 포함하기때문에 ApplicationContext로 등록됨. @Repository 1. 특정 persistence에 맞는 예외를 찾고 스프링의 일원화된 체크 되지 않..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cb0Mlv/btrER16TtmJ/kByJD5E31pSibkkssN9xOk/img.png)
Java Spring과 AWS Cognito를 연동하는 방법을 알아봅니다. 로그인, 회원가입, 로그아웃까지 가장 기본적인 회원인증 기능을 구현합니다. 1. Amazon Cognito 세팅하기 먼저 아래 두가지를 유의하여 aws cognito console에 userpool을 생성합니다. (1) CallbackURL 스프링 환경설정 파일의 redirect-uri와 일치하도록 설정(로그인후 랜딩 페이지) (2) logoutURL 스프링 환경설정 파일의 logoutUrl과 일치하도록 설정(로그아웃후 랜딩페이지) 2. Spring 세팅하기 build.gradle implementation 'org.springframework.security:spring-security-oauth2-client' implemen..