자바 언어 기반의 프레임워크자바 언어의 가장 큰 특징은 객체 지향 언어Spring은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크유연하고 변경이 용이하다example자동차가 바뀌어도 운전자 역할은 변함 없다.운전자는 자동차 역할에 대해서 알고 있음.
좋은 객체 지향 설계의 5가지 원칙Single Responsibiity Principle한 클래스는 하나의 책임만 가져야 한다.변경이 있을 때 파급 효과가 적으면 SRP를 잘 따른 것Open/Closed Principle소프트웨어 요소는 확장에는 열려 있으나 변경에는
ApplicationContext를 Spring Container라고 한다.ApplicationContext는 Interface이다.기존에는 개발자가 AppConfig를 사용해서 직접 객체 생성 및 DI\--> Spring Container를 통해서 진행Spring C
지금까지 스프링 없이 구현한 순수한 DI 컨테이너인 AppConfig는 요청할 때마다 객체를 새로 생성한다.메모리 낭비가 심함객체를 1개만 생성하고, 공유하도록 설계하면 된다.Class의 instance가 딱 1개만 생성되는 것을 보장하는 디자인 패턴싱글톤 패턴 문제점
@ComponentScan 지금까지 자바 코드의 @Bean이나 XML의 등을 통해 설정 정보에 Spring Bean을 등록했다. -> 반복 및 누락 이슈 Spring은 설정 정보가 없어도 @ComponentScan을 통해 자동으로 Spring Bean을 등록한다. 의
생성자를 통해서 의존 관계를 주입하는 방법생성자 호출 시점에 딱 한 번만 호출되는 것이 보장된다.불편, 필수 의존관계에 사용setter를 통해서 의존관계를 주입하는 방법선택, 변경 가능성이 있는 의존관계에 사용필드에 바로 주입외부에서 변경이 불가능하기에 테스트가 힘들다
콜백어떤 이벤트가 발생했거나 특정 시점에 도달했을 때 시스템에서 호출하는 함수Bean 생명주기Bean 객체가 생성되어 소멸되기 전까지의 모든 과정스프링은 의존관계 주입이 완료되면 스프링빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공스프링은 스프링