일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring JPA
- spring MVC
- @FunctionalInterface
- aws secretmanager
- asyncconfigurer
- DeferredImportSelector
- CompletableFuture
- micrometer tracing
- java.util.list
- EnableWebMvc
- map
- spring
- HashMap
- Spring Boot
- java
- java list
- asynccustomautoconfiguration
- traceasynccustomautoconfiguration
- SpringMVC
- kotlin
- Sleuth
- ResponseBody
- traceId
- spring3 spring2 traceid
- jpa
- java lambda
- list
- elasticsearch
- b3-propagation
- awssecretsmanagerpropertysources
- Today
- Total
목록분류 전체보기 (69)
du.study기록공간
이전에도 간략하게나마 Spring boot의 동작 원리를 작성한 적이 있습니다. 이번에는 그 과정을 좀 더 자세하게 기록해 보고자 합니다. 결론부터 말하면 스프링 부트는 두가지 방법으로 bean 등록을 하게됩니다. - ComponentScan 을 통한 bean등록 - DeferredImportSelector 를 구현하고 있는 클레스를 @Import를 통하여 불러오는 @Configuration을 선언하고 있는 클레스 우선은 SpringBoot의 시작부분부터 시작해보겠습니다. 1. @SpringBootApplication @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = Filter..
JPA 를 사용하면서 save동작시, event를 등록하는 방법에 대해 기록하려합니다. 특정 entity가 저장이 될때, event호출을 통하여 특정 동작을 수행하게 할 수 있습니다. 코드로 간략하게 보면 다음과 같습니다. Event 코드 public class AccountEvent extends ApplicationEvent { private final Account account; public AccountEvent(Object source) { super(source); this.account = (Account) source; } public Account getAccount() { return account; } } Listener 코드 @Component public class Account..
현재 spring boot와 gradle을 이용하여 개발을 진행하고 있습니다.(언어는 kotlin) 보통은 백엔드만 개발을 진행하지만, 어드민 툴을 개발하면서 프론트 개발을 react로 같이 진행해야했고, 빌드시 자동으로 프론트코드가 빌드되어 jar안에 포함되길 원했습니다. build시 프론트코드와 함께 같이 실행하는것을 원했기에 gradle build시 npm빌드를 하기위하여 방법을 찾던도중 다음과 같은 방법으로 해결할 수 있었습니다. 제 프로젝트 구조는 다음과 같습니다. 다음은 gradle 파일입니다. import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import com.moowork.gradle.node.npm.NpmTask import org.jet..
이전에도 간단하게 다룬적이 있지만 따로 기록을 위하여 다시 작성하려합니다. JPA서 limit사용하고 싶은 경우에 Pageable를 사용하게 됩니다. 우선 데이터와 repository는 다음과 같습니다. (mysql) (repository) public interface AccountRepository extends JpaRepository { List findByIdGreaterThan(Long id, Pageable pageable); } 해당상태에서 조회하는 쿼리는 다음과같이 할 수 있습니다. int batch = 2; long startId = 0; while(true){ List list = accountRepository.findByIdGreaterThan(startId,PageRequest...
이번에는 자바로 JPA Null 처리하는 방법에 대해 기록하려합니다. 당연하게 db조회시, 객체가 없을경우 null이 발생할 수 있고, 우리는 null을 대비해야만 합니다. 1. Optional 이전에 Java8 부터 등장한 Optional에 대해 포스팅을 한 적이 있습니다. duooo-story.tistory.com/38?category=881766 Java Optional 사용하기 이번에는 Optional 사용법에 대해 기록해보려 합니다. 먼저 Optional은 NULL 처리( 또는 반환값이 없는 ) 에 유용하게 사용되며 이 덕분에 런타임에서 발생되는 NullPointerException를 좀 더 깔끔하도록?(사� duooo-story.tistory.com JPA에서 단일 엔티티를 조회하는 경우, O..
이상하게 Intellij 에서 AutoImport를 할때, java.util.List가 Auto Import 되지않는 이슈가 있었습니다. 이게 대체 왜지??? 하면서 해결법을 찾아봤는데.. 해결은 다음과 같이 하였습니다. File -> settings -> Editor -> General -> Auto Import 에 들어가서 다음과 같은 부분을 제거해줍니다. 이게 왜 대체 설정되어있을까.. 하는 의문이 들지만 해당부분을 제거하면 List를 자동으로 임포트할때 정상동작합니다. 이상한걸로 시간이 뺏긴 느낌이지만.. 해결이 되었으므로 Done!
JpaRepository를 사용하면서 매번 사용하고 있는 API들에 대해 한번 기록해보려합니다. 우선 테스트를 다음과같은 간략학 JpaRepository를 작성하였습니다. import org.springframework.data.jpa.repository.JpaRepository; public interface AccountRepository extends JpaRepository { } 다음과 같이 JpaRepository 를 상속만 하면되며 별도의 @Repository를 이용하여 등록하지 않아도 됩니다.(이부분은 추후에 다시 찾아보는걸로) repository의 준비가 끝났고, 이제 사용할 수 있는 method를 정리하려 합니다. JpaRepository를 살펴보면, 내부적으로 PagingAndSort..
JPA를 사용하다보면 가끔 Bulk 업데이트를 위하여, query를 사용하여 업데이트 하는 경우가 있습니다. 그리고 이 경우, 우리는 항상 @modifying를 사용하게 됩니다. 그렇다면 어째서 @modifying를 사용해야만 하는것을까라는 궁금증이 생겼습니다. 그래서 @Query를 이용해서 업데이트 쿼리를 작성하되 @modifying를 사용, 미사용 상태로 돌려본 후, 결과를 지켜봤습니다. 우선 Repository interface에 @Modifying을 선언하지 않고 실행한 결과입니다. @Component public class JpaRunner implements ApplicationRunner { @Autowired private Repo repo; @Transactional @Override p..
앞으로 좀 자세하게 작성해 나갈 내용들에 대해서 간략한 요약을 작성하려합니다. 내부적으로 확인해봐야할게 매우 많지만, 우선 코드가 조금 익숙치 않아 기본부터 간략하게 정리하려 합니다. 현재 코틀린을 다루는 기술 이라는 책을 보면서 필요한 부분은 추가로 작성중입니다. 1. 필드 및 변수 - 다음과 같이 val, var 을 통해서 변수를 선언할 수 있다. 차이점이 있다면, val은 java 기준 final처럼 불변을 보장하며, var의 경우 가변필드로 사용할 수 있다. val test = "hello world" var test2 = "hello world2" - 타입을 생략 할 수 있다. 다음과 같이 변수에 대해서 타입을 생략할 수 있다. 단, 추론한 타입과 내가 원한 타입이 다를수 있음에 주의하고 왠만하..
이 글은 코틀린을 전~~~혀 모르는 개발자가 공식홈페이지를 보며 따라해보며 배워가는 글 입니다. 해당 글은 https://kotlinlang.org/docs/reference/basic-syntax.html에서 보면서 처음부터 따라해보는것을 목표로 합니다. 언어를 새로 돌려볼땐 국룰 Hello World를 찍어보려합니다. 우선https://kotlinlang.org/docs/tutorials/getting-started.html 해당 공식 페이지의 문서대로 설정하였습니다. (너무 잘나와있기에..) fun main() { println("Hello world") } 계속 자바를 메인으로 써서 그런진 모르겟지만, 별도 클레스 선언없이 바로 메인을 실행하는건 조금 어색합니다. 뜬금없지만 코틀린을 갑자기 살펴보..