일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- yml
- 오블완
- fractional seconds
- getDateCellValue
- mysql not equal null
- getEntityGraph
- AuditingEntityListener
- deserializer
- sendFractionalSeconds
- MYSQL
- NamedEntityGraph
- MSSQL
- apatch poi
- spring boot
- RootGraph
- https
- mysql =
- Protecle
- EmbeddedId
- 티스토리챌린지
- createEntityGraph
- +9:00
- 버전 문자열 비교
- @CreateDate
- 1*1000
- mysql equal null
- @EntityListeners
- pooled-lo
- 운동해서 광명찾자
- load order
- Today
- Total
목록spring (17)
Hello
예전에 다중 서버 환경 스케쥴 처리 시 spring schedule를 사용해 중복실행되지 않도록 처리했습니다. 오늘 schedule에서 SQLException이 발생해 확인 요청을 받아 서버에 파일로그를 확인했는데 에러가 없어 try{}catch()문으로 포장해 에러를 남기도록 했는데도 따로 에러 로그는 확인되지 않았습니다. Azure Insight 에서 확인된 에러라 Insight를 보니 아래 이미지 정보를 제공했습니다. 1 ) 아래 이미지에서 응답을 보면 200으로 호출이 성공한 것을 알 수 있습니다. 2 ) 실행 요청 내에서 일어나는 db 호출에 대한 로깅을 다 남겨주는 것을 알 수 있습니다. 3 ) 첫번째 db 호출이 EXCEPTION이 빨간색으로 표시되어 이슈가 있음을 알 수 있습니다. -- 오..
간단한 검색이 필요한 API를 만들어야했는데, 쿼리 메서드를 사용해 작성하게 되면 서비스 코드에 if의 향연이 펼쳐 질 것 제외 했다. 그리고 프로젝트 규모가 너무 작아 Querydsl 사용하기 보다는 Srping Data JPA의 Specification을 사용해 보았습니다. Specification은 JPA Criteria를 활용해 조회 쿼리를 작성 하도록 지원합니다. Specification 사용 방법 public interface NoticeRepo extends JpaRepository, JpaSpecificationExecutor { } 기존에 사용하던 Repository에 JpaSpecificationExecutor 를 상속합니다. JpaSpecificationExecutor 는 조회 기능만..
트랜잭션 어노테이션을 작성하지 않은 메소드에서 DB호출이 있을 때 TransactionInterceptor.invoke가 호출되어 트랜잭션이 동작하는 것 처럼 보여 디버깅 해보았는데 실행되는 이유는 의외로 단순했다. Spring Data JPA(Java Persistence API)는 Spring 에서 제공하는 모듈로 JPA를 편하게 사용할 수 있도록 도와준다. 해당 모듈에서 자주 사용하는 기능을 지원하는 JpaRepository interface 를 제공하고 있다. 우리가 JpaRepository를 상속해서서 편하게 db작업을 처리할 수 있는 이유는 기본 구현체인 SimpleJpaRepository가 JpaRepository를 상속한 JpaRepositoryImplementation를 구현하고 있기 때..
하..다썻는데..날라갔다 진짜 하기싫다 인생사 왜 임시저장도 안되있냐 진짜 다시 해야하냐 LocaleResolver request를 통한 locale 확인과 request,response를 통한 locale 수정을 모두 허용하는 웹 기반 lcoale 확인 전략용 인터페이스 request, session, cookie 등 기반한 구현을 허용합니다. 기본 구현은 Acc RequestContext.getLocale() 실제 해결 전략과 관계없이 현재 locale 값 확인 가능하다. spring4 부터 LocaleContextResolver 이 추가 되어 Locale 및 Timezone 정보 지원이 가능합니다. - AcceptHeaderLocaleResolver 브라우저에 설정된 language 정보를 사용한다..
SQLServer2012 버전부터 offset fetch절을 지원합니다. JpaRepository를 상속받아 Page findAll(Pageable var1); 메소드 호출시 Offset Limit절을 사용하지 않고 Jpa 자체 쿼리를 사용하는 이슈가 있어서 디버깅을 통해 OrderBy가 작성되지 않아 Offset절이 사용되지 않는 것을 확인했습니다. SQLServer2012LimitHandler.processSql() 메소드에서 order by절 유무를 통해 페이징 처리 쿼리절의 방법이 나뉩니다. public String processSql(String sql, RowSelection selection) { if ( hasOrderBy( sql ) ) { if ( !LimitHelper.useLimit..
spring boot properties 설정 관련된 내용을 새로 알게되어 정리하고자 글을쓴다. application.properties application-dev.properties spring boot는 profile properties 파일을 우선으로 로드하고있다. spring.active.profile 속성을 통해 읽고자 하는 프로파일을 설정할 수 있습니다. spring.active.profile=dev 속성을 지정한다면, 위와 같은 파일을 가질 경우 application-dev.properties -> application.properties 순으로 파일을 읽어 낸다. 위의 설정이 아래와 같이 값을 가지고 있다면 있다면, dev.properties 설정을 읽는다. 우선순위는 {profile}...
Spring은 HTTP 통신을 위해 RestTemplate와 WebClient를 제공한다. Spring5에서 WebClient가 추가 되면서 RestTemplate는 Deprecated 될 예정이므로 WebClient 사용을 권장한다. RestTemplate 과 WebClient 차이 RestTemplate Blocking I/O 기반의 동기식(Synchronous) API 순차적 처리 호출자 Thread를 사용합니다. 별도의 Thread를 할당 하지 않을 경우 Main Thread 사용 RestTemplate 호출에 응답을 받을 때 까지 Thread가 대기상태(block)가 된다. WebClient Non-Blocking I/O 기반의 비동기식 API 비순차적 처리 별도의 Worker Thread가 할..