Web/Spring 26

[스프링 핵심 원리] 06. 의존관계 자동 주입

1. 의존관계 주입 방법기본적으로 @Autowired는 스프링 빈에만 작동한다. 순수한 자바 테스트 코드에는 작동하지 않는다.@Componentpublic class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; ..

Web/Spring 2025.01.21

[스프링 핵심 원리] 05. 컴포넌트 스캔

1. @ComponentScan, @Component@Configuration@ComponentScan()public class AutoAppConfig {}@Componentpublic class MemoryMemberRepository implements MemberRepository {}- 스프링은 Bean 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능을 제공한다.- 기존의 AppConfig와는 다르게 @Bean으로 등록한 클래스가 하나도 없다.- 스프링 빈의 기본 이름은 클래스명을 사용하되 맨 앞글자만 소문자를 사용한다. (직접 지정도 가능) 2. @Autowired@Componentpublic class MemberServiceImpl implements MemberSer..

Web/Spring 2025.01.20

[스프링 핵심 원리] 04. 싱글톤 컨테이너

1. 싱글톤이 없는 웹 애플리케이션public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig appConfig = new AppConfig(); //조회: 호출할 때 마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); MemberService memberService2 = appConfig.memberService(); //참조값이 다른 것을 확인 System.out.println("memberService1 = " + m..

Web/Spring 2025.01.20

[스프링 핵심 원리] 02. 객체 지향 설계 적용 예제

1. 요구사항과 설계회원- 회원을 가입하고 조회할 수 있다.- 회원은 일반과 VIP 두 가지 등급이 있다.- 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책- 회원은 상품을 주문할 수 있다.- 회원 등급에 따라 할인 정책을 적용할 수 있다.- 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.)- 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루 고 싶다. 최악의 경우 할인을 적용하지 않을 수 도 있다. (미확정) 2. 회원 도메인 설계 3. 주문과 할인 도메인 설계4. 관심사의 분리DIP와 OCP를 위해 애플리케이션의 전체 동작 방식..

Web/Spring 2025.01.16

[스프링 핵심 원리] 01. 객체 지향 설계와 스프링

스프링 생태계https://spring.io/projects Spring | ProjectsProvides core support for dependency injection, transaction management, web apps, data access, messaging, and more. 6.2.1+ 7 versionsspring.io 스프링의 핵심- 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크- 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크- 다형성을 극대화해서 이용할 수 있게 도와준다. 다형성의 본질- 인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경할 수 있다.- 클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있다. 역할과 ..

Web/Spring 2025.01.15