본문 바로가기

Room 102. Back-end/Spring

[실전 개발자를 위한 Spring Framework ] 강의 - Spring

 S사의 협력사인 우리 회사는 파트너사 자격으로 S사에서 진행하는 온라인 강의를 수강할 수 있는 기회를 가졌습니다.
 다양한 강의들이 있었고 6가지 강의를 신청했지만 모두 탈락되었고, 5월에 다시 1개의 강의를 신청하여 수강할 수 있게 된 강의가 바로 스프링 프레임워크 강의입니다

 원래는 객체지향을 먼저 다진 후에 복습하려고 했던 스프링이지만, 5월 안에 수강하여야 되기에,, 순서가 약간 거꾸로지만 선행 및 병행 학습 하면서 가보도록 하겠습니다!

 

 01강 스프링 프레임워크 개요 

    • 개요 : EJB를 주 프레임워크로 사용할 때 불편했던 점들을 보완하여 나타남
      • 2002년 로드 존슨이 출판한 도서 J2EE 디자인 앤 개발에 선보인 코드가 스프링에 근간이 됨 
        이걸 기반으로 로드 존슨의 허가를 받은 뒤에 프레임워크로 발전 시킴 
        2003년 6월 Apache 2.0 라이센스로 최초 공개되었음
    • 스프링 프레임워크란?
      • 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크. 
        기업용. Production을 위해 적합하다고 볼 수 있음!
        • 애플리케이션 프레임워크란 : 특정 계층이나 기술 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크를 말함.
        • 경량급 프레임워크 : 단순한 웹 컨테이너에서도 엔터프라이즈 개발의 고급기술을 대부분 사용할 수 있음.
    • 스프링 프레임 워크 특징
      • 엔터프라이즈 개발을 용이하게 해줌
         : 개발자가 복잡하고 실수하기 쉬운 로우레벨에 많이 신경쓰지 않으면서 
           비즈니스 로직 개발에 힘쓸수 있음.
      • 컨테이너 역할. 
         : Spring 컨테이너는 Java 객체의 라이프 사이클을 관리하며, 컨테이너가 객체를 관리.
           중요하고 자주 쓰이는 객체들을 개발자가 아닌 스프링에서 관리하도록 하여 편리하게 해줌. 
      • DI (Dependency Injection) 지원 
         : Spring 은 설정 파일이나 어노테이션을 통해서 객체 간의 의존관계를 설정할 수 있습니다.  
      • AOP 지원.  
         : 핵심 코어 기술과 주변 기술을 따로따로 개발하여 런타임 시 결합하여 주며
          어플리케이션을 단순하게 만들어주고. 생산성과 전체적인 유지보수를 포함한 여러 품질을 좋게 만들어주는 고급 기술.
      • POJO (Plain Old Java Object) 지원
         : Spring 컨테이너에 저장되는 Java객체는 특정한 인터페이스를 구현하거나, 
           특정 클래스를 상속받지 않아도 됩니다.
      • 트랜잭션을 지원.
      • 영속성(Persistence)를 지원
        • 위 두 가지는 시스템 서비스라고 하는데 서비스를 관리하기 쉽게 추상화 시켜놓음.
      • (컨테이너 제공) (AOP 지원) (서비스를 추상화 시킴)
    • 스프링의 주요 모듈
      : 스프링은 범용 엔터프라이즈급 어플리케이션을 지양하기 때문에
        여러 가지 모듈을 가지고 있고 현재도 계속해서 모듈이 추가되고 있습니다.


      • 크게 Data Access 영역 / Web 영역 / Core Container
        • Data Access 영역(데이터연동모듈)
          : 기본적으로 Transactions 모듈을 기반으로 하고 있으며
            Datasource 기능과 메시지 서비스, ORM, XML 매핑 등 NoSQL 을 다루는 모듈로 제공하고 있음 (대표적으로 MongoDB나 Redis)
        • Web 영역
          : 엔터프라이즈 급 기능은 보통 웹 기반이기 때문에 상당히 중요함
            J2EE 스펙을 지원하며 POJO 지양함.
            Servlet 과 Web 을 추상화 시켜 놓은 느낌
        • Core Container
          : 주요한 객체들. 컨테이너에 올라가면 Bean 이라고 부르는 객체들을 관리함.
            
    • 스프링을 지원하는 툴
      • Spring Tool Suite
        : 기존에는 플러그인 형태로 스프링이 지원되었지만 스프링을 위한 이클립스 툴이 별도로 STS 가 있음
      • IntelliJ IDEA by JetBrains
        : IDE 전용 개발 회사 JetBrains 에서 만듬. 안드로이드 스투디오도 구글이 JetBrains 로 외주 맡겨서 만들었다고 함.