스프링은 자바 언어 기반의 프레임워크자바 언어의 가장 큰 특징 - 객체 지향 언어스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크추상화, 캡슐화, 상속, 다형성객체지향은 컴퓨터 프
기존에 정액할인 정책을 사용하다가 정률 할인 정책으로 변경하는 상황OrderServiceImpl에서 FixDiscountPolicy()를 RateDiscountPolicy()로 변경해줬다.1\. DIP를 위반한다.주문서비스 클라이언트(OrderServiceImple)은
new AnnotationConfigApplicationContext(AppConfig.class)로 컨테이너 생성여기서는 AppConfig.class로 구성정보를 지정했다.최근에는 스프링부트를 많이 사용하면서 XML설정은 잘 사용하지 않는다.아직 많은 레거시 프로젝트
이전에 만들었던 순수한 자바 AppConfig는 요청할 때 마다 객체를 새로 생성한다.고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성되고 소멸된다 -> 메모리 낭비가 심하다이 문제를 싱글톤 패턴을 사용하면 해결할 수 있다.클래스의 인스턴스가 딱 1개만 생
지금까지 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 <bean> 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했다.예제에서는 몇개가 안되었지만, 이렇게 등록해야 할 스프링 빈이 수십, 수백개가 되면 일일이 등록하기도 귀찮고, 설정 정보도
생성자를 통해 의존관계를 주입(스프링을 포함한 DI프레임워크 대부분이 권장하는 방식)부분의 의존관계 주입은 한번 일어나면 애플리케이션 종료시점까지 의존관계를 변경할 일이 없다. 오히려대부분의 의존관계는 애플리케이션 종료 전까지 변하면 안된다.(불변해야 한다.)수정자 주
데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다.간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가