# 애플리케이션이 준 정책을 넣고, 그 정책이 불리는지 센다
    AtomicInteger workCalls = new AtomicInteger();

    JpaRetryPolicy customPolicy =
        (failure, attempt) -> {
          policyCalls.incrementAndGet();
          return RetryDecision.fail("application policy says do not retry");
        };

    var profile =
        TransactionProfile.write("order.write", Duration.ofSeconds(5))
            .withRetryProfile(RetryProfile.boundedContention("order.write", 2));


애플리케이션 정책 호출 : 0
작업 호출             : 2
최종 예외             : SerializationFailureException

# 플랫폼이 자기 빈에 넣는 기본 프로파일
  @ConditionalOnMissingBean
  @ConditionalOnBean(SpringJpaTransactionExecutor.class)
  public FullTransactionRetryCoordinator jpaRetryCoordinator(
      SpringJpaTransactionExecutor executor, RetryEventListener retryListener, Clock clock) {
    return new JpaTransactionAutoConfiguration(clock)
        .retryCoordinator(
            executor,
            dev.caskeleton.adapter.outbound.persistence.api.transaction.RetryProfile
                .boundedContention("jpa-platform-default", 3),
            retryListener);
  }
