날아라쩡글이의 블로그입니다.
spring framwork설명 본문
728x90
반응형
Spring은 POJO기반의 javaEE 애플리케이션 개발을 지원하는 경량(light-weight)의 프레임워크이다.
- POJO
- plain old java object
- 평범한 옛날 자바 객체
- plain
- 특별한 라이브러리, 특별한 실행환경이 필요하지 않은 객체
- 특정환경에 종속되지 않는 객체
- 개발하기 쉽다.
- 재사용성이 높다
- 테스트가 용이하다.
- old
- EJB등장이전의 평범한 자바객체로 개발하던시절
- new키워드로 객체를 생성하고 사용하던 시절
- 특별한 실행환경이 필요없던 시절
- 특별한 환경 혹은 라이브러리에 종속되지 않는 재사용성이 높고, 테스트하기 쉬운 객체
- EJB등장이전의 평범한 자바객체로 개발하던시절
- 특징
- 경량의 프레임워크다.
- 여러개의 라이브러리로 구성되어 있다.
- 필요없는 기능은 뺴버려도된다.
- 꼭 필요한 라이브러리로 구성할 수 있다.
- 경량의 프레임워크다.
- 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이다.
반응형
'중앙 HTA (2106기) story > spring java framwork story' 카테고리의 다른 글
느슨한 결합, DB 연결 (0) | 2021.12.27 |
---|---|
의존성 주입의 수동 주입 방법 (0) | 2021.12.27 |
의존성 주입 (DI) 자동 주입 (0) | 2021.12.27 |
전자전부표준프레임워크 (0) | 2021.12.27 |
의존성 주입 (Dependency Injection: DI),setter주입 (0) | 2021.12.24 |
Comments