본문 바로가기

Back_end/Spring

[ 스터디 ] 스프링 웹 프로젝트 - Day 1

안녕하세요. 김고릴라 입니다.

이번 Spring을 공부를 시작하면서 느낀점이 많습니다.
번째로 객체지향 프로그래밍법의 중요성을 깨달았고
번째로 여러 프로그래밍 기법, 이론, 디자인패턴 등
배워야할 것들이 
정말 많다는것을 느꼈습니다.

그래서!
  
오늘부터 가능한 매일 [ 코드로 배우는 스프링 웹 프로젝트 ] 라는
책을 기반으로 실습위주로 Spring을 공부하고
이를 블로그에 정리하여 포스팅 하고자 합니다.

부족한점이 있다면 댓글로 좋은 가르침 부탁드리고, 
궁금한점이 있다면 언제든 댓글남겨주세요.
오늘도 제 블로그를 찾아와 주셔서 감사합니다. ^^~




DAY - 1


제목: Spring이란?
부제: Spring project 생성과 Spring의 특징  

개발도구

  • Spring Tool Suite(STS) 이클립스 기반으로 개발된 통합 개발 도구

  • 이를 사용하기 위해서는 사전에 JDK의 설치가 필요합니다.



스프링 프로젝트 시작

  • Spring Starter Project = Spring BootSpring Boot(스프링 부트)는 그 목적 자체가 최대한 간단하게 실행하고 배포가 가능한 수준의 웹 애플리케이션을 제작하는 것입니다.

  • Spring Legacy Project아래 항목을 충족시 이 프로젝트로 시작

    • 현재 같이 일하는 사람들이 WAS를 사용하고 있는가?

    • 스프링을 써 본적이 있는가?

    • 모델 2 방식을 이해하고 경험해 본 적이 있는가?

    • Tomcat과 같은 WAS를 사용해 본 적이 있는가?

    • WAS실행 시에 에러가 발생하면 어느 정도는 자신이 해결 가능한가?





NOTE )

MAVEN

  • Maven은 엄밀하게 말해서 프로젝트 관리 도구로 프로젝트의 시작과 끝까지의 단계에 맞춰서 사용하는 개발 도구이지만, 가장 많이 사용되는 용도는 프로젝트의 필요한 의존적인 라이브러리를 자동으로 관리해주는 용도로도 많이 사용됩니다.



다른 프레임워크와 차별되는 Spring만의 장점

  • 복잡함에 반기를 들어서 만들어진 프레임워크

    • 스프링은 그 태생 자체가 엔터프라이즈급의 시스템이 실패하는 이유를 복잡성으로 보고, 복잡성을 해결하기 위해 나온 경량화된 프레임워크입니다.

  • 프로젝트의 전체 구조를 설계할 때 유용한 프레임워크

    • 스프링은 어느 한 분야에만 집중하지 않고, 전체를 설계하는 용도로 사용될 수 있습니다.

  • 다른 프레임워크들의 포용

    • 스프링은 전체 구조에 집중했디 때문에 특정한 영역의 프레임워크와 공존하는 방식으로 사용할 수 있었습니다.

    • 스프링의 최대 장점은 기본 뼈대를 흔들지 않고, 여러 종류의 프레임워크를 혼용해서 사용할 수 있다는 점입니다.

  • 개발 생산성과 개발도구의 지원

    • 스프링의 이론적으로는 개발자가 제대로 이해해야하는 부분이 많지만, 결과적으로는 코드의 양은 확실히 줄어들 수 있었고, 유지보수에 있어서도 XML의 설정 등을 이용했기 떄문에 환영받을 수 있었습니다.

    • STS 나 Eclipse 등의 플러그인의 지원 역시 다른 프레임워크에 비해서 빠른 업데이트가 되었기 떄무에 별도의 새로운 개발 도구에 대한 적응 없이도 개발이 가능했습니다.



스프링의 주요 특징

  • POJO 기반의 구성

    • POJO란?자바의 단순한 오브젝트를 이용해 애플리케이션의 비즈니스 로직을 구현하는 것

    • POJO의 조건

      1. 특정 규약(Contract)에 종속되지 않는다

        POJO는 자바 언어와 꼭 필요한 API 외에는 종속되지 않아야 합니다.

      2. 특정 환경에 종속되지 않는다특정 환경에 종속적이어야만 동작하는 오브젝트도 POJO라고 할 수 없습니다.

  • 의존성 주입(DI) 을 통한 객체 간의 관계 구성

    • IoC - Inversion Of Control (제어의 역행)말 그대로 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것을 의미합니다.

    • DI - Dependency Injection (의존성 주입)DI는 클래스 사이의 의존관계를 빈 설정 정보를 바탕으로 컨테이너가 자동적으로 연결해주는 것을 말합니다. 개발자들은 제어를 담당할 필요없이 빈 설정 파일에 의존관계가 필요하다는 정보만 추가해주면 됩니다. 그러면 오브젝트 레퍼런스를 외부(Container)로부터 주입 받아서, 실행 시에 동적으로 의존관계가 생성됩니다. 결국 컨테이너가 흐름의 주체가 되어서 애플리케이션 코드에 의존관계를 주입해주는 것입니다.

      • 의존성 주입은 말 그대로 이런 의존적인 객체를 직접 생성하거나, 제어하는 것이 아니라, 제어의 역행으로 특정 객체에 필요한 객체를 외부에서 결정해서 연결 시키는 것을 의미합니다.

      • 의존성 주입 종류

        1. 생성자를 통한 주입

        2. set메서드를 이용한 주입

  • AOP지원횡단 관심사를 모듈로 분리하는 프로그래밍의 패러다임입니다.

    • 횡단 관심사란?대부분의 시스템이 공통으로 가지는 보안이나 로그, 트랜잭션과 같이 비즈니스 로직은 아니지만, 반드시 처리가 필요한 부분을 스프링에서는 횡단 관심사 라고 합니다.

  • 편리한 MVC구조

  • WAS에 종속적이지 않은 개발 환경