패키지 설정
Pom.xml = maven과 소통할수 있는 인터페이스, 관리 통로
maven 라이브러리 편리하게, 의존성으로 연결된 라이브러리까지 한번에 관리, 배포자동화
서버 관리할때 war 파일로 export 해서 aws 서버로 전송하는 작업도 maven에서 편리하게 가능
maven -> gradle
target폴더 배포 잘안될시 확인 용도
IOC : 코드 결합도를 가능한 최소화 하여 유지보수 장점을 살리는 패러다임 < --
IOC성립을 위해 DL / DI
제어의 역전 / 인스턴스에 대한 제어건이 개발자가 아닌 스프링에게 있다, 스코프, 사이클, 패턴등을 스프링이 관리
Inversion Of Control -> IOC , Dependency LooKup -> DL 의존성 검색
AOP / INTERCEPTOR : 횡단관심사 및 중간 개입 처리 기법
코드 분량 최소화 / 개발자 편의성 개선
고난도 디자인 패턴 단순화
Layer 세분화에 의한 이식성 향상
스프링에서 인스턴스들을 bean이라 한다
getBean시 타입을 object타입으로 꺼내오기 때문에 캐스팅이 필요하다
ApplicationContext ctx = new GenericXmlApplicationContext("context.xml");
//스프링 컨테이너, 스프링과 관련된것들을 포함한 컨테이너 / Spring Container 생성
//context.xml을 읽어서 context.xml안의 bean(인스턴스)들을 new한다
TV tv = (SamsungTV)ctx.getBean("tv"); // tv id를 가진 인스턴스를 주라
//TV tv = ctx.getBean(TV.class); //위와 동일 타입을명시하지 않아서 유지수 편리
Bean에 접근하기 위해 컨테이너가 제고하는 API를 이용하여 Bean을 Lookup하는것 DL
tv.on();
tv.volumeUp();
tv.off();
<bean id = "tv" class="kh.spring.tools.LgTV" lazy-init="true">
lazy-init="true"를 하게 되면 스프링컨테이너가 생성되는 시점에 만들어지지 않고
getBean , DL하면 만들어진다
scope="prototype" 싱글톤 패턴 해제
<constructor-arg ref="speaker"></constructor-arg>
di / dependency injection
LgTV bean을 생성할때 생성자 매개변수로 speaker를 넣어준다 의존성 주입
speaker 인스턴스를 생성자 매개변수로 주입
no qualifying bean of type
-- bean이 없다는 에러
- 빈 스코프란?
빈이 존재할 수 있는 범위, 생성부터 소멸까지의 범위를 가리키는데,
지금까지 싱글톤 스코프로 학습하였기 때문에, 스프링 컨테이너의 시작과 종료가 동일하게 유지되었었다.빈이 가질 수 있는 다양한 스코프를 배워보자.
기본 Bean
싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프
프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하는 짧은 범위의 스코프
웹 Bean
request: 웹 요청이 들어오고 나갈때 까지 유지되는 스코프
session: 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프
application: 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프