날아라쩡글이의 블로그입니다.

spring framwork설명 본문

중앙 HTA (2106기) story/spring java framwork story

spring framwork설명

날아라쩡글이 2021. 12. 27. 13:57
728x90
반응형

Spring은 POJO기반의 javaEE 애플리케이션 개발을 지원하는 경량(light-weight)의 프레임워크이다. 

  • POJO 
    • plain old java object
    • 평범한 옛날 자바 객체 
    • plain 
      • 특별한 라이브러리, 특별한 실행환경이 필요하지 않은 객체 
      • 특정환경에 종속되지 않는 객체 
        • 개발하기 쉽다. 
        • 재사용성이 높다 
        • 테스트가 용이하다. 
    • old
      • EJB등장이전의 평범한 자바객체로 개발하던시절 
        • new키워드로 객체를 생성하고 사용하던 시절
        • 특별한 실행환경이 필요없던 시절
      • 특별한 환경 혹은 라이브러리에 종속되지 않는 재사용성이 높고, 테스트하기 쉬운 객체 
    • 특징
      • 경량의 프레임워크다. 
        • 여러개의 라이브러리로 구성되어 있다. 
        • 필요없는 기능은 뺴버려도된다.
        • 꼭 필요한 라이브러리로 구성할 수 있다. 
        • 경량의 프레임워크다.
      • IOC의 구현체이다. 
        • Inversion of control : 제어 역전
        • new로 직접 생성하는 것이아닌, private Service servie;로 작성을하면, service를 어노테이션이 찾아서 주입하고, 조립하는 것을 의미한다. 
        • spring Container가 넣어주고, 객체를 생성하는 방법과 책임이 제 3자에게 있다는 것을 의미한다. 
        • spring Container가 필요한 객체를 생성하고, 필요한 곳에 주입해서, 획득방법이 역전된다는 것이다. 
        • IOC의 구현체는 spring container를 의미한다.
          • 어떤 모듈이 사용할 모듈을 스스로 결정하는 것이 아니라, 다른 모듈에게 선택권을 넘겨주는 것을 의미한다. 
          • 사용할 모듈을 직접 생성하는 것이 아니라, 제 3자에게 제공받는 것이다.
        •  DI(Dependency Injection : 의존성 주입)
          • 모듈간의 의존성을 외부에서 주입시켜주는 것이다. 
          • 스프링 컨테이너는 DI에 대한 강력한 기능을 지원한다.
          • ex)엄마가 옷사와서 입혀주는 것이다. spring Container에게 필요한 것을 명시하면 주입하는 것이다.
        • DL(Dependency Lookup : 의존성 검색)
          • 컨테이너가 관리중인 객체 저장소에서 객체를 검색해서 참조하는 것이다. 
          • ex) 의류업체에서 옷을 만들고, 특정장소에 진열한다. 그리고 가져와서 사용하는 것을 의미한다. 
      • AOP의 구현체이다.
  • java EE 
    • 서버에서 사용하는 자바이다. 
    • 현재까지 우리는 웹을 만들기 위해서 사용했다
      • email로 분산하고, remote object를 호출하고, 트렌젝션 처리할 때 사용, JMX, JMS, 배치프로그램에서 사용하지만, 현재 우리는 web만 사용했다.
    • javaEE는 서버어플리케이션으로 DB Acess할 경우가 많을 때 사용한다. 
    • 큰 규모, 대용량 Data 요청시, 하나의 서버에서 처리 불가하고, 여러개의 서버로 만들어서 별도의 서버에서 관리한다. 
      • EJB 는 RemoteObject를 호출하고, 다른트랜젝션과 대규모 애플리케이션을 사용하는 서버이다. 
      • JavaEE는 다중 데이터베이스 트랜젝션과 대규모 터리가 필요하기 때문에 EJB서버가 필수이다. 
      • 우리Application은 EJB에서 돌아가게 만들어야하고, Servlet, JSP, interface상속, interface구현 을 EJB가 돌려준다. 
        • Tomcat 웹서버는 webApplication을 배포하는데, Servlet과Jsp여야한다. https요청처리하고, request, response의 처리를 웹서버없이 servlet과 jsp밖에 없기 때문이다. 
      • EJB는 개발만 하지 않고, test도 함께 실행하는데, packaging 서버 배포 ->껏다 키고, -> 수정하고 다시 packging->무한반복으로 진행되었다. 
      • test하고 package, EAR하는 작업으로 빌드도구개발이 되었고, 
        • ant라는 도구로 테스크단위로 작성하고, 순서도 작성하는 것을 빌드 -> 배포 -> 실행으로 되었다. 
      • 결론적으로 대규모 어플리케이션은 필수적으로 EJB기술을 사용하고, 특정 interface로 구현하고, 상속하고 packaging하고 ->배포하고 ...
        • 개발자가 힘든기술로 개발이 힘드니까 기간이 길어졌다. 
        • 객체 지향은 객체지향기술을 이용해서 재사용성을 높이는 것이 본질인데, 
          EJB는 반드시 EJB라는 기술이 들어가야한다. 
        • class에 EJB밖에 실행되지 않는다.
      • 자바의 취지에 어긋난다. 
        재사용성과 운영체제의 독립적으로 사용하는 부분도 다 자바의 취지에 어긋나기 때문에 POJO가 등장하게 되었다. 
        • 평범한 java클래스로 만들수 없을까? 
        • 그래서 나온게 spring이다. 평범한 java class 를 Enterprise application으로 개발하고, spring이 제공하여, EJB서버가 없이 spring서비스로만으로도 개발하게 되었다. 
      • spring은 어노테이션만 존재하고 class은 자바의 형태를 가지고 있다. spring은 옛날에는 POJO였으나 버젼이 올라갈수록, spring의 때가 뭍어 완전한 POJO의 형태를 갖고 있지 않다, 배포과정이 수훨하고, EJB는 거의 사용하지 않는다. 
        • 결론으로 평범한 자바클래스를 특별한 라이브러리로 개발하는 것이 spring이다.
반응형
Comments