Spring이란?
- 자바플랫폼을 위한 오픈소스 애플리케이션 프레임워크
메이븐이란?
-
Maven은 자바용 프로젝트 빌드도구
-
빌드도구는 프로젝트 생성, 컴파일, 테스트 빌드, 패키징, 배포, 라이브러리 관리 기능 등의 작업을 위한 전용 프로그램
-
메이븐 설치를 통해 설정 파일과 이클립스 없이 빌드를 사용할 수 있지만, 이클립스에 메이븐 플러그인을 설치해서 메이븐 설치없이도 사용가능
-
라이브러리 관리 기능
- Spring 프로젝트를 편리하게 관리 가능, 가장 많이 사용되는 부분이 라이브러리 관리 기능
- Java로 개발하다 보면 다양한 라이브러리를 필요로 하게 되는데, pom.xml 파일에 필요한 라이브러리를 적으면 Maven이 알아서 다운받아 설치해주고 경로까지 지정해준다.
*pom.xml : Project Object Model, 메이븐이 프로젝트를 처리하는 필요한 정보를 제공하는 파일
의존성 주입(Dependency Injection, DI)
=> Main 클래스는 PrintA 클래스에 의존적
- 스프링에서 말하는 DI란 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 객체 간의 의존성(객체 간의 관계맺음)을 객체 내부에서 직접 해주는 대신, 외부에서 객체를 생성해서 넣어주는 방식
- 이전까지는 이와 같은 객체 간의 의존성 설정을 1) A클래스 내에서 B객체를 new B()를 통해 생성해서 넣어주거나, 혹은 2) B클래스에서 싱글톤 패턴을 이용해서 자신의 객체를 생성해둔 것을 A 클래스 내에서 getInstance() 등의 메소드 등을 통해 받아서 넣어주는 방식을 사용
- Spring에서는 객체 간의 관계 설정을 클래스 내부에서 직접 하는 방식 대신, Spring Container를 이용하여 외부에서 객체를 생성하고, 객체를 주입해주는 방식, 즉 의존성 주입 방식을 채택
<의존성 주입방법>
xml을 이용한 DI 방식
자바코드를 이용한 DI 방식
- @Configuration, @Bean 빈 객체 생성
DI 자동주입
- @annotation을 사용한 의존성 자동 주입
- 생성자, setter를 통한 주입 방식이 아닌 @어노테이션을 통해 자동주입 가능
- 전역변수, 함수, 생성자 위에 사용가능
- @annotation을 사용하기 위해 xml에 <context:annotation-config/>설정 필요
- 컴포넌트 스캔을 통한 빈 자동 등록(@Component)
- XML을 통한 bean 등록이 아닌 자동으로 빈을 등록하여 사용
- 클래스명 위에 @Component 로 빈 등록
- XML에 <context:component-scan/> 설정 필요
- @어노테이션을 사용하여 의존성 주입을 해야 함