Spring
-
Spring delete 메소드 주의사항Spring 2023. 2. 14. 22:33
Delete 쿼리 종류 TL;DR 속도 측면에서는 deleteAllInBatch() 가 가장 빠르다. test 코드를 제외하고는 deleteAllInBatch() 를 사용하지 말자 설명 delete(entity) 해당 메서드는 CrudRepository 에 등록되어 있는 메서드 입니다. 엔티티를 파라미터로 받아 해당 엔티티를 삭제합니다. deleteAll() 해당 메서드는 CrudRepository 에 등록되어 있는 메서드로 해당 레포지토리에서 관리 되는 모든 entity 를 삭제합니다. deleteAllInBatch() 해당 메서드는 JpaRepository 에 등록되어 있는 메서드로 모든 entity 를 한번의 함수 실행으로 삭제합니다. 예시 코드의 예시로 설명해보겠습니다. 예시로 다룰 엔티티는 Me..
-
Kotlin 에서 Spring 으로 테스트할 때 주의사항Spring 2023. 2. 14. 20:19
문제 상황 kotlin 에서 JUnit 을 사용하여 테스트를 구성했지만 org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter 오류가 발생했습니다. @SpringBootTest class MemberRepositoryTest( val memberRepository: MemberRepository, ) { @Test @DisplayName("멤버 삭제") fun deleteMember() { val member = memberRepository.save(MemberFactory.of("test")) memberRepository.delete(member) } } 해결 방..
-
Spring BeanSpring 2022. 7. 25. 23:40
스프링은 어노테이션, Java 혹은 xml 기반으로 bean 을 정의하면 객체를 bean 으로 등록하여 개발자가 편하게 주입 받아 사용할 수 있습니다. 이번 포스팅에선 Spring Bean 과 Spring IoC 컨테이너에 대해 알아보겠습니다. Bean 이란? 스프링 IoC 컨테이너가 관리하는 객체를 의미합니다. A bean is an object that is instantiated, assembled, and otherwise managed by a Spring IoC container. - 스프링 공식문서 - 그렇다면 스프링 IoC 컨테이너란 무엇을 의미할까요? Spring IoC 컨테이너란? ApplicationContext 인터페이스가 Spring IoC 컨테이너를 대표합니다. Bean을 관..
-
Spring에 비해 SpringBoot 가 가지는 특징Spring 2022. 7. 3. 00:42
TL;DR 자주 사용되는 라이브러리들의 버전 관리 자동화 spring-boot-starter : 관련 있는 모듈들의 모음을 제공해준다. spring-boot-starter-parent: 각 모듈의 현재 Spring Boot 버전에 가장 적합한 버전을 제공해준다. AutoConfig로 복잡한 설정 자동화 @EnableAutoConfiguration 내장 웹서버 제공 Embedded WAS Tomcat, jetty, undertow 모두 가능 모니터링 Actuator 그외 애플리케이션 자동 재시작과 리로딩(사용자 코드 변화를 감지하고 애플리케이션 재시작함), 라이브 리로드(HTML 이나 JS 등의 파일이 변경 되어도 다시 실행하지 않아도 됨) 를 지원하는 dev-tools 가 있다. 스프링 부트는 서블릿 컨..
-
Filter 와 Interceptor 의 차이Spring 2022. 6. 26. 23:16
Spring Filter 와 Interceptor 이번 포스팅에선 닮은듯 다른 Filter 와 Interceptor 에 대해서 자세히 알아보도록 하겠습니다. 위 2개와 AOP 는 공통적으로 여러 작업을 처리함으로써 중복된 코드를 제거할 수 있다는 공통점이 있습니다. 3가지 지능들은 모두 어떤 행동을 하기전에 먼저 실행하거나, 실행한 후에 추가적인 행동을 할 때 사용되는 기능들입니다. 1. 필터(Filter) J2EE 표준 스펙 기능입니다. J2EE 란, 자바를 이용하여 서버 개발을 하기 위해 만들어진 플랫폼입니다. J2EE 스펙에 따라 제품으로 구현한 것을 웹 애플리케이션 서버 또는 WAS(대표적으로 톰캣)라 불립니다. Dispatcher Servlet 에 요청이 전달되기 전/후 에 URL 패턴에 맞는 ..
-
@Transaction(readOnly = True)Spring 2022. 5. 8. 15:07
TL;DR 안 써도 됩니다. 하지만 사용하면 성능 최적화 및 실수로 데이터를 변경하는 일을 방지할 수도 있습니다. 본문 JPA 를 사용하다보면 @Transactional(readOnly=True) 가 종종 사용되는 것을 볼 수 있습니다. @Transactional 을 사용하면 Spring AOP 가 해당 메소드 앞, 뒤에 transaction 시작과 transaction.commit() 을 실행해주기 때문에 사용해야 한다는 것을 알았지만 @Transactional(readOnly = True) 는 사용을 하던 하지 않던 별 차이(사실 그동안 어떤 차이도 느끼지는 못했습니다.) 를 느끼지 못했기 때문에 왜 써야하는지 의문이 많이 들었습니다. 최근에 동욱님 책으로 공부를 하고 있을 때 모든 포스팅을 읽어오는..
-
Spring Cloud Sleuth(1)Spring 2022. 1. 29. 23:30
Spring Cloud Sleuth(1) 아래의 내용은 Spring Cloud Sleuth 2.2.8 RELEASE 버전을 한국말로 번역한 내용입니다. https://docs.spring.io/spring-cloud-sleuth/docs/2.2.8.RELEASE/reference/html/ 소개 Spring Cloud Sleuth 는 Spring Cloud 를 위한 분산 추적을 구현한 솔루션입니다. 용어 Spring Cloud Sleuth 는 구글에서 개발한 Dapper 의 용어를 빌려 사용합니다. Span 일의 가장 기본적인 단위입니다. 예를 들어 RPC에 응답을 보내는 것처럼 RPC 를 보내는 것은 새로운 Span 입니다. 스팬은 고유한 64비트 ID 로 식별됩니다. 또한 Trace(스팬의 총 묶음)..
-
Spring Annotation 정리Spring 2021. 5. 4. 22:07
왜 저는 스프링에서 어노테이션들을 볼떄마다 처음보는거 같을까요? 이번기회에 다 정리하려고 합니다. 이 상태로는 정말 안되겠어요 ㅠㅠ @Component Component-scan을 선언에 의해 특정 패키지 안의 클래스들을 스캔하고 해당 어노테이션이 있는 클래스에 대해서 bean을 생성합니다. @Qualifier 같은 타입의 빈이 두 개 이상이 존재하는 경우에 스프링이 어떤 빈을 주입해야 할 지 알 수 없어서 스프링 컨테이너를 초기화하는 과정에서 예외를 발생시킨다. 이 경우 @Qualifier과 @Autowired를 함께 사용하여 정확히 어떤 bean을 사용할지 지정하여 특정 의존 객체를 주입할 수 있도록 한다. @Inject @Autowired와 동일한 기능을 수행하지만 이는 JSR 표준이다. 따라서 S..