Maven Spring Project 생성 및 IoC

bacccine·2022년 6월 6일
0

spring

목록 보기
3/10

Spring Project

spring 프로젝트에서 꼭 maven build tool을 사용해야 하는 것은 아니지만, 프로젝트가 maven 기반으로 되어있어 사실상 표준이라고 할 수 있다

maven은 프로젝트의 소스 디렉토리 구조를 미리 정의하고 있다

sts로 spring project 생성

  1. Dynamic Web Project로 생성한다
    이 때 WAS 설정이 필요하다. Apache Tomcat 8.0에 Dynamic web module version을 3.1로 설정하면 spring 4점대 version을 지원한다

  2. 소스 디렉토리의 경로를 Maven Convention에 맞게 수정
    일반적으로 java source를 src\main\java 폴더에 저장. 개발에 필요한 여러 설정 파일 등을 src\main\resources 폴더에 저장. 개발하는 폴더와 1대1 대응되는 test 전용 폴더가 존재

  3. Eclipse 내장 Maven plugin > Maven project로 전환한다

    프로젝트명 우클릭 > Configure > Convert to Maven Project

    maven 프로젝트는 반드시 pom.xml을 동반하여야 한다

  4. 의존성(Dependency) 추가
    maven 중앙 저장소에서 필요한 라이브러리를 조회하여 pom.xml 파일 내 <dependencies> 태그 내에 붙여넣기 해준다
    spring-context 라이브러리를 추가해준다

스캐폴딩(scaffolding)이란?

사전적 의미는 공사장에서 공사를 편하게 지으려고 만든 임시 가설물
간단한 명령만으로 실제 사용 가능한 화면까지 생성해주는 역할을 수행하는 scaffolding 기능도 있다

IoC(제어권의 역전;Inversion of Control)란?

객체의 제어를 시스템이 하는 것으로, 객체의 라이프 사이클을 컨테이너가 관리한다
자주 사용되는 객체들을 미리 메모리에 올려놓겠다는 것
IoC를 spring container가 구현한다

IoC 컨테이너

객체에 대한 생성 및 생명주기를 관리할 수 있는 기능, spring은 framework 자체가 컨테이너를 포함하고 있다

(1) 객체의 생성을 책임지고, 의존성을 관리한다
☞ new로 객체를 생성하고, 사용이 끝나면 가비지컬렉터에서 수거해가는 일이 반복되지 않아도 됨
(2) POJO의 생성,초기화,서비스, 소멸에 대한 권한을 가진다
(3) 개발자들이 직접 POJO를 생성할 수 있지만 컨테이너에게 맡기는 것
(4) Spring 이외에도 PicoContainer와 Guice가 있다

객체 요청이 빈번한 서비스에서 컨테이너를 사용하지 않으면 부하가 생긴다

IoC 분류

① DI; Spring/PicoContainer
② DL; EJB/Spring

DI(의존성 주입;Dependency Injection)란?

각 클래스 간 의존관계를 Bean 설정 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것

객체들끼리 의존 관계를 가질 때, 의존 관계를 처리해준다 → 자동 참조

(1) Setter Injection; setter에 의한 injection
(2) Constructor Injection; 생성자에 의한 injection
(3) Method Injection; 메소드 이름으로 injection

DL(의존성 검색;Dependency Lookup)이란?

저장소에 저장되어 있는 Bean에 접근하기 위해 컨테이너가 제공하는 API를 이용하여 Bean을 Lookup하는 것

사용할 객체를 찾아 사용자에게 전달해주는 역할
객체 id나 타입을 통해 dependency를 찾을 수 있다

☞ DL 사용 시 컨테이너 종속성이 증가하여, 주로 DI를 사용한다

Managed Bean(=Spring Bean)이란?

Spring 컨테이너에 의해 관리되는 객체
spring 설정 파일에 등록되어 사용된다 → xml 태그로 등록된다
자동 등록될 수 있다 → annotation 이용

Spring container란?

관리되는 bean(=Managed Bean)이 모여있는 곳
IoC container로써 Application Context 클래스로 구현된다
spring은 spring container에 bean(자바 객체)을 로딩하여 관리한다

Bean 설정파일 만들기

src\main\resources 폴더 밑에 xml 파일을 만든다. 기본 스키마가 정의되어있기 때문에 sts의 기능을 이용하자

new > other > spring bean configuration file

<beans> 루트 태그 밑에 <bean>을 설정해준다
이 때, id와 class 속성 설정이 필요한데, id는 나중에 bean을 찾을 때 사용된다

id는 클래스명과 동일하게 작성하는 것(단, 소문자로 시작)이 convention이다
class는 full package 명.파일명으로 작성한다.

객체를 생성하지 않고 컨테이너에서 꺼내오기 위해선 다음과 같은 코드를 입력하고 실행한다

AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("/Bean 설정파일명.xml");
		
		객체 dao = ctx.getBean("id명",클래스명.class);

해당 코드가 실행되면 spring container가 실행된다
이미 생성된 객체를 가져오게 되는 것

0개의 댓글