목록Study/Spring Boot (14)
전공공부
https://velog.io/@ddh963963/Webflux-R2dbc-nonblocking-vs-MVC-JDBC-blocking-%EC%84%B1%EB%8A%A5-%ED%85%8C%EC%8A%A4%ED%8A%B8 Webflux + R2dbc (nonblocking) vs MVC + JDBC (blocking) 성능 테스트 완전한 환경에서 한 테스트가 아니기 때문에 편차가 있을 수 있습니다. WebFlux vs MVC 테스트의 목적 및 개요 WebFlux 와 MVC의 성능테스트를 눈으로 보고 스레드의 동작을 살피는 것이 테스트의 목적 velog.io https://medium.com/oracledevs/spring-blocking-vs-non-blocking-r2dbc-vs-jdbc-and-webfl..
MVC 패턴은 일반적으로 Controller, Service, Repository 각 계층의 역할과 책임을 분리하여 애플리케이션 유지보수성을 높이기 위해서 사용합니다. 하지만, MVC 패턴은 비즈니스 로직과 외부 서비스의 로직 결합도를 완전히 분리하지 못한다는 단점이 있는데요. 이를 같이 알아봅시다. MVC @Service public class OrderService { private final OrderRepository orderRepository; private final String filePath; public OrderService(OrderRepository orderRepository, @Value("${file.path}") String filePath) { this.orderRepos..
단위 테스트는 소프트웨어 개발의 중요한 부분입니다. Mockito는 Java에서 단위 테스트를 작성할 때 널리 사용되는 프레임워크 중 하나입니다. 하지만 Mockito를 사용하면서 발생할 수 있는 몇 가지 이슈가 있었고 이를 정리해봤습니다. 문제 : NullPointerException / MockitoException Cannot invoke "org.springframework.jdbc.core.JdbcTemplate.queryForObject(String, Object[], org.springframework.jdbc.core.RowMapper)" because "this.jdbcTemplate" is null 이 에러는 UserDaoImpl 클래스의 인스턴스가 생성될 때 JdbcTemplate 객..
PSA (Portable Service Abstraction) PSA (Portable Service Abstraction)는 스프링에서 서비스 추상화를 구현하는 개념입니다. 이는 특정 기술에 종속되지 않고, 일관된 인터페이스를 제공하여 서비스들을 편리하게 교체하고 테스트하기 위한 목적으로 도입되었습니다. 그렇다면 이 예제가 무엇일까요? import com.test.tester.portableServiceAdapter.dao.UserDao; import com.test.tester.portableServiceAdapter.dto.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdb..
1. 소프트웨어 아키텍처 검토 헥사고날 아케텍처를 사용하므로써의 이점을 알아야 사용을 하는데 동기부여가 될 것이다. 우선 소프트웨어 아키텍처는 유지 보수가 잘 되어지는 형태로 짜여져야 기술적인 부채를 줄일 수 있다. 그저 동작하는 코드를 짜는 것은 쉽다. 하지만, 소프트웨어 업그레이드가 진행 될 때마다 코드를 다시 유지보수를 진행하고 이때, 아키텍처 구조가 제대로 짜이지 않은 코드는 어색하고 스파게티 코드가 되기 쉽다. 그리고, 대부분의 소프트웨어는 시간이 지날수록 더욱 변경 사항을 추가하고 변경하는 것이 어려워지고 또한, 프론트엔드나 UI가 없이 테스트 케이스를 돌릴 수 있는 코드를 만들기 위해서는 헥사고날 아키텍처가 필요하다고 한다. 2. 헥사고날 아키텍처의 이해 주된 아이디어중 하나는 비지니스 코드..
계기 파일 시스템으로 관리되는 bin 파일을 WAS 서버로 불러와 사용하려 하였는데 Java OOM 이슈가 있어 DB에 해당 데이터를 적재한 후 필요한 만큼만 가져와 사용 할 필요가 있었다. 그래서 큰 용량의 데이터를 한 번에 insert 하게 되었는데 생각보다 시간이 너무 많이 걸려 이를 최적화 하기 위해서 사용해보았다. 구현 @Service @RequiredArgsConstructor public class ItemJdbcServiceImpl implements ItemJdbcService{ private final JdbcTemplate jdbcTemplate; private int batchSize; // 배치 사이즈 크기 지정 public void saveAll(List items){ int b..