분류 전체보기118 타입 기반 주입 스프링에서 @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. 고수준 & 저수준 고수준 모듈과 저수준 모듈을 구분하는 것은 소프트웨어 시스템 설계에서 중요한 개념입니다. 이를 이해하려면 각 모듈의 역할과 시스템 내에서의 위치를 고려해야합니다. 고수준 모듈 (High-level Module)고수준 모듈은 시스템의 주요 로직이나 정책을 포함하는 모듈입니다. 이 모듈은 시스템이 수행해야 할 큰 그림을 담당합니다.비즈니스 로직, 애플리케이션의 주요 기능을 포함합니다.다른 모듈의 동작을 지시하거나 조정합니다. ( 다른 모듈을 호출하거나 상호작용하는 주요 진입점 )일반적으로 인터페이스를 통해 다른 모듈과 상호 작용합니다. ( 구체적인 세부 사항을 다루지 않음 )컨트롤러(OrderController, UserController), 서비스 레이어 (OrderService, UserService.... 2024. 5. 24. SOLID 단일 책임 원칙 (SRP : Single Responsibility Principle)단일 책임 원칙 이란 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화 해야한다. 클래스가 제공하는 모든 기능은 이 책임과 주의 깊게 부합해야합니다. 로버트 마튼은 책임을 변경하려는 이유로 정의하고, 어떤 클래스나 모듈은 변경하려는 단 하나의 이유만 가져야 한다고 합니다. * 코드 라인이 100줄 이상이라면 책임이 많은건 아닌지 의심해야봐 합니다. 개방-폐쇄 원칙 (OCP : Open-Closed Principle)개방-폐쇄 원칙은 소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에는 열려 있어야 하고, 수정에는 닫혀 있어야 한다. 는 프로그래밍 원칙입니다. 이 원칙을 잘 적용하면 기능이 추가되거.. 2024. 5. 23. 이전 1 2 3 4 5 6 7 8 ··· 30 다음