Skip to content

Latest commit

 

History

History
50 lines (29 loc) · 3.89 KB

create_spring_project.md

File metadata and controls

50 lines (29 loc) · 3.89 KB

2. Spring 프로젝트 만들기

2-1. 이클립스에 스프링 플러그인 설치(Spring Tool Suite)

  • 이클립스 실행 및 Help -> Eclipse Marketplace 진입
  • STS 플러그인 검색하기(본인의 이클립스 버전에 맞는 STS)
  • 플러그인 모두 선택 후 Confirm
  • 약관 동의 후 진행
  • 이클립스 재부팅

2-2. 처음 만들어 보는 스프링 프로젝트

  • new -> project -> spring legacy project 선택
  • project name 입력 후, Template항목에서 Simple Spring Maven 템플릿 선택
  • src/main/java 경로 아래에 클래스 만들어서 어플리케이션 구동 실습
  • Ex) Calculator 클래스 생성 후, Main 클래스에서 돌려보기

2-3. DI(Dependency Injection)와 IoC(Inversion of Controller) 컨테이너

  • DI에 관한 별도의 학습 정리

  • A객체가 B,C 객체에 의존하는 상황

    • 즉, A객체에서 B,C 객체가 필요한 상황에
  • B, C객체를 생성하는 방법은 두가지가 있다.

    • 첫번째는 A 객체 내부에서 B, C 객체를 new를 통해서 직접 생성하는 방법
    • 두번쨰는 B,C객체를 외부해서 생성해서 A객체 내부에 넣어주는 방법(의존성 주입)
  • B,C객체 + a 객체들을 부품화 시켜서 한 곳에 모아둔것을 IoC 컨테이너라고 한다.

  • 결국, 스프링은 부품을 생성해서 IoC 컨테이너에 넣고 의존성 주입을 통해 조립하는 라이브러리 집합체 라고 할 수 있다.

  • Servlet 컨테이너, EJB 컨테이너라고 말하는 것을 종종 들어봤을 것이다. 컨테이너는 보통 인스턴스의 생명주기를 관리하며, 생성된 인스턴스들에게 추가적인 기능을 제공하도록하는 것이라 할 수 있다.

    다시말해, 컨테이너란 당신이 작성한 코드의 처리과정을 위임받은 독립적인 존재라고 생각하면 된다. 컨테이너는 적절한 설정만 되어있다면 누구의 도움없이도 프로그래머가 작성한 코드를 스스로 참조한 뒤 알아서 객체의 생성과 소멸을 컨트롤해준다.

    Servlet 컨테이너는 Servlet의 생성, 생성 후 초기화, 서비스 실행, 소멸에 관한 모든 권한을 가지고 있다. 개발자들이 직접 Servlet을 생성하고 서비스하지는 않는다. 이처럼 Servlet 인스턴스에 대한 생명주기를 관리하는 기능을 가진다. 또한, Servlet 컨테이너의 web.xml을 보면 JSP/Servlet 접근 권한에 대한 추가적인 서비스도 지원하고 있다. 이는 Servlet의 구현과는 별도로 각 JSP/Servlet에 대한 Security를 관리해주는 기능을 한다.

    스프링 컨테이너는 스프링 프레임워크의 핵심부에 위치하며, 종속객체 주입을 이용하여 애플리케이션을 구성하는 컴포넌트들을 관리한다.

    다시 말하면, 프로그래머가 작성한 코드는 컨테이너를 사용하게 됨으로서 프로그래머의 손을 떠나 컨테이너의 영역으로 떠나버리게 된다. (정확히 말하자면 컨테이너가 맘대로 객체를 생성하는 게 아니라 프로그램을 이용하는 이용자의 호출에 의해 컨테이너가 동작하게 되는 구조이다.)

    출처: http://limmmee.tistory.com/13

  • 기존에 자바 기반으로 어플리케이션을 개발할 때 자바 객체를 생성하고 서로간의 의존관계를 연결시키는 작업에 대한 제어권은 보통 개발되는 어플리케이션에 있었다. 그러나 Servlet, EJB등을 사용하는 경우 Servlet Container, EJB Container에게 제어권이 넘어가서 객체의 생명주기(라이프사이클)을 Container들이 전담하게 된다. 이처럼 IoC에서 이야기하는 제어권의 역전이란 객체의 생성에서부터 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것(IoC 컨테이너)을 의미 한다.