Spring/etc
-
순단과 같은 네트워크 에러가 가끔 발생하는 부분에 대한 처리를 어떻게 해야 할지 고민하는 도중 spring-retry를 발견하게 되었고, 간편하게 retry 로직을 수행할 수 있을 것 같아 학습하고 적용해 보았다. Spring project https://github.com/spring-projects/spring-retry Dependency implementation("org.springframework.retry:spring-retry") implementation("org.springframework:spring-aspects") @EnableRetry @Configuration @EnableRetry public class MyConfig { ... } @Retryable @Retryable( ..
[Spring] spring-retry 재시도 with TestCode순단과 같은 네트워크 에러가 가끔 발생하는 부분에 대한 처리를 어떻게 해야 할지 고민하는 도중 spring-retry를 발견하게 되었고, 간편하게 retry 로직을 수행할 수 있을 것 같아 학습하고 적용해 보았다. Spring project https://github.com/spring-projects/spring-retry Dependency implementation("org.springframework.retry:spring-retry") implementation("org.springframework:spring-aspects") @EnableRetry @Configuration @EnableRetry public class MyConfig { ... } @Retryable @Retryable( ..
2024.03.23 -
@Transactional은 Proxy 방식으로 동작한다 간략하게 어떻게 proxy가 생성되는지 알아보자 @Service @RequiredArgsConstructor public class TestService { public void insertTest(){ // do something } } public class TestServiceProxy{ private final TransactonManager tm = TransactionManager.getInstance(); public void insertTest() { try { tm.begin(); // 트랜잭션 전처리(트랜잭션 시작, autoCommit(false) 등) insertTest(); // 기존 로직 tm.commit(); // 트랜잭션..
[Spring] @Transactional 동작방식 및 주의사항@Transactional은 Proxy 방식으로 동작한다 간략하게 어떻게 proxy가 생성되는지 알아보자 @Service @RequiredArgsConstructor public class TestService { public void insertTest(){ // do something } } public class TestServiceProxy{ private final TransactonManager tm = TransactionManager.getInstance(); public void insertTest() { try { tm.begin(); // 트랜잭션 전처리(트랜잭션 시작, autoCommit(false) 등) insertTest(); // 기존 로직 tm.commit(); // 트랜잭션..
2023.11.21 -
테스트 수행 시, 각 phase별로 설정이 다른 경우나 특정 phase인 상황을 테스트하고 싶을 수 있다. 그런 경우 어떻게 설정하는지 알아보도록 하자. @Profile 빈이나, 컴포넌트에 프로필을 구분하여 등록할 수 있게 해주는 어노테이션 @TestConfiguration public class TestConfiguration { @Bean @Profile("beta") public DataSource DataSource() { return new Log4jdbcProxyDataSource(hikariDataSource()); } @Bean @Profile("alpha") public DataSource testDataSource() { return new HikariDataSource(hikariDa..
[Spring] @ActiveProfiles, @Profile 활용 in Test테스트 수행 시, 각 phase별로 설정이 다른 경우나 특정 phase인 상황을 테스트하고 싶을 수 있다. 그런 경우 어떻게 설정하는지 알아보도록 하자. @Profile 빈이나, 컴포넌트에 프로필을 구분하여 등록할 수 있게 해주는 어노테이션 @TestConfiguration public class TestConfiguration { @Bean @Profile("beta") public DataSource DataSource() { return new Log4jdbcProxyDataSource(hikariDataSource()); } @Bean @Profile("alpha") public DataSource testDataSource() { return new HikariDataSource(hikariDa..
2023.08.26 -
외장 Tomcat을 이용하여서 운영하던 서비스를 Spring Boot에서 제공하는 내장 Tomcat으로 전환하기로 하였다. 그 과정에서 Tomcat server.xml 설정의 Connector 내용을 spring boot 설정으로 옮기게 되었다. 각 설정들의 값들 중에 connection, thread에 해당하는 값들을 살펴보도록 하자. Thread server.tomcat.threads.max: 200 server.tomcat.threads.min-spare: 10 해당 값들은 application.yml에 "server.tomcat.." 설정을 하지 않았을 때의 default값들이다. ( https://docs.spring.io/spring-boot/docs/current/reference/html/..
[Tomcat] connection, thread, keep-alive 설정 살펴보기외장 Tomcat을 이용하여서 운영하던 서비스를 Spring Boot에서 제공하는 내장 Tomcat으로 전환하기로 하였다. 그 과정에서 Tomcat server.xml 설정의 Connector 내용을 spring boot 설정으로 옮기게 되었다. 각 설정들의 값들 중에 connection, thread에 해당하는 값들을 살펴보도록 하자. Thread server.tomcat.threads.max: 200 server.tomcat.threads.min-spare: 10 해당 값들은 application.yml에 "server.tomcat.." 설정을 하지 않았을 때의 default값들이다. ( https://docs.spring.io/spring-boot/docs/current/reference/html/..
2023.07.01