Spring, Springboot6 자가 호출 자가 호출은 굉장히 빈번하게 일어나는 일이면서 별다른 문제가 없지만 스프링 빈 메서드에서 자가 호출이 일어나면 이야기가 다릅니다.스프링의 빈 메서드에서 발생하는 자가 호출은 개발자의 의도를 벗어나는 결과를 만들 수 있습니다. 특히 자가 호출되는 메서드에 AOP 애너테이션이 지정돼 있을 경우 문제가 됩니다. 예를 들어, 다음과 같은 스프링 컴포넌트가 있다고 해봅시다.@Controller@RequiredArgsConstructorpublic class MyController { private final MyService myService; @ResponseStatus(HttpStatus.OK) @GetMapping public Object doSomething() { myS.. 2024. 7. 16. 타입 기반 주입 스프링에서 @Autowired 애너테이션을 이용한 의존성 주입은 타입 기반으로 작동합니다. 의존성 주입이 필요할 경우 스프링 컨테이너는 타입 기반으로 빈(bean)을 찾는다는 말입니다. @Autowired 애너테이션은 일치하는 타입이 찾아 이를 주입하고, 만약 해당 빈을 찾지 못하면 NoSuchBeanDefinitionException 에러를 발생시킵니다. 인터페이스로 선언된 멤버 변수를 주입 받는 애플리케이션 서비스@Service@RequiredArgsConstructorpublic class NotificationService { private final NotificationChannel notificationChannel;} 인터페이스public interface Notificatio.. 2024. 7. 15. 서비스 ( Service ) 서비스는 도메인 객체나 도메인 서비스라고 불리는 도메인에 일을 위임하는 공간이어야 한다.리포지터리에서 도메일 객체를 불러온다.도메일 객체이 일을 시킨다.리포지터리에 도메일 객체를 저장한다.컨트롤러에 응답한다.예를들어, 물건을 파는 사이트를 상상해 봅시다. 이 서비스에는 상품(Product), 쿠폰(Cupon), 마일리지(Mieage) 라는 도메인이 있습니다. 그리고 물건의 가격을 계산하기 위해 다음과 같은 계산식을 사용합니다. 가격 = 상품가격 - ( 상품가격 * 쿠폰 최대할일율) - 사용자 마일리지 만약 해당 계산 로직이 모두 Service 레이에어 포함되어 있다면 트랙잭션 스크립트 코드로 안티패턴입니다. 그리고 서비스에 있는 비즈니스 로직은 도메인 객체가 처리하게 만들어야 합니다. 그런데, Produ.. 2024. 7. 10. Spring Cloud OpenFeign Spring Cloud OpenFeign은 Spring Cloud 프로젝트의 일부로, 마이크로서비스 간의 HTTP 기반 통신을 단순화하는데 사용되는 선언적 REST 클라이언트입니다. Feign은 Netflix에서 개발되었으며, Spring Cloud는 이를 Spring 생태계에 통합하여 마이크로서버스 아키텍처에서 서비스 간 통신을 더 쉽게 구현할 수 있도록 지원합니다. Spring Cloud OpenFeign 주요 특징 선언적 REST 클라이언트 : 인터페이스에 어노테이션을 추가함으로써 HTTP 요청을 추상화 합니다. 이를 통해 개발자는 HTTP 클라이언트 코드를 직접 작성하는 대신 비즈니스 로직에 더 집중할 수 있습니다. 통합된 로드밸런싱 : Eureka, Consul 같은 서비스 디스커버리 도구와 통.. 2024. 2. 7. 이전 1 2 다음