아... 항상 맥사용하다 보면 다운로드 폴더에 프로그램 저장해 놓고 싹 지워버린다. 호롤로록
SPRING TOOL SUITE 다시 깔아야겠다.... 이클립스에서 메이븐 설치하고 자바스프링 관련 라이브러리 받고 하다보면,
설정할 것들이 너무 많다, 그래서 STS 사용하는건데 ,,, 어디갔지?
http://spring.io/tools/sts/all
현재 4.5.1 버전으로 되어있내.
3분 남았다. 맥북 13인치 쓰니까 모니터 더 가지고 싶다.
예전에 연구실에서 42인치 LG 티비에 연결하고 쓸때는 무지 편했는데 ㅎㅎ
역시 옵티멈 와이파이라 인터넷이.. 어, 5분으로 늘어났어,, 400메가 받는건데.. 왜?
잡담은... 치우고..
일단 STS 설치는 나중으로 미루고, 개념부터 다시 정리해야겠다.
JAVA SPRING 이란?
자바 엔터 프라이즈 개발을 편하게 해주는 오픈소스 어(애?)플리케이션 프레임워크,
개발을 빠르고 효율적으로 할 수 있도록 애플리케이션의 바탕이 되는 툴/모델/기술 API 등을 제공한다.
사후 많은 것들을 A/S 아니 유지보수하려면 많이 힘들단다. 그런 어려움을 해결하기위해 스프링이 고안됬는데
다시 간단하게 말하면 JAVA SPRING은 간단히 틀이다 틀. FRAME=틀 !
자바 스프링이 현재까지 오기까지는 오픈소스의 힘이 컸다고 봐도 된다.
오픈소스란 공개된 커뮤니티 안에서 많은 사람들이 자유롭게 프로젝트에 참여하는 것이다. 관련 직종에 종사하는 사람들, 코딩을 사랑하는 사람들, 현장에서 코딩을 접하고 비지니스를 하는사람들 누구나 사용할 수 있기 때문에 버그, 보안이 필요한 점등을 빠르게 수정 할 수 있었다. 개인에게만 공개된 소스가 아니라서 모두 이해하기 쉽고, 정리가 잘된 소스가 만들어졌다.
역사[편집]
로드 존슨이 2002년에 출판한 자신의 저서인 Expert One-on-One J2EE Design and Developement 에 선보인 코드를 기반으로 시작하여 점점 발전하게 되었다.
- WIKIPEDIA.CO.ORG
자바 스프링이 나오기전, 엔터프라이즈급(기업을 대상으로 하는) 개발이 가진 복잡함에 대한 해결책이 있었다.
EJB(Enterprise Java Beans)는 EJB라는 기술과 관련된 코드, 규약, 환경에 종속 했으며, 복잡함을 더 만들어 냈다.
자바빈즈가 가진 두가지 단점을 해결하는 JAVA SPRING은
1. 기술과 관련된 코드, 규약, 환경에 대해 종속 :
+ 자세한 사항(로우레벨)의 개발을 벗어난 'THE IDEA' (추상화) 만으로 서비스를 만든다.
+ 비침투적인 코딩 방식으로 기술의 적용 사실이 분리되어 특정 클래스/인터페이스/API등에 등장하지 않는다.
+ 반복적 작업 코드 제거
2. 기술적 복잡함 :
+ 비지니스 로직(일에 과정 OR 환경)으로 부터 분리된 기술
+ 복잡함을 비지니스 로직의 복잡함 이상으로 증대를 방지
SPRING의 목적 ?
위에서 언급한 EJB 혹은 회사 업무와 관련된 프로그램을 제작할때 생기는 복잠함들을 제거하고,
프로젝트에 참여하는 초보자 혹은 다음 담당자가 유지보수를 쉽게할 수 있도록 도와주기 위함이다.
SPRING의 핵심?
스프링의 목적과 ,EJB의 복잡함을 해결하기 위한 것을 아래 적어 보았다.
1. (핵심) POJO
2. IOC/DI
3. AOP
4. 서비스 추상화
(주황색이 초큼 지겹군....)
먼저
SPRING의 핵심이라는 POJO에 관해서 알아보자.
POJO란 Plan Old Java Object 이다.
쉽게 생각해 보면 순전한 자바 객체인데, 즉 강제적으로 제한되어진 것을 제외하고
어떠한 제약이 없는 객체를 말한다.
1. 부모 클래스를 확장 하지 않는다.
2. 인턴페이스 클래스를 구현하지 않는다.
3. 어토네이션을 포함하지 않는다.
복잡함을 버리고 , 간단한 자바 객체를 가지고 일을 하는 철학을 가지고 있다.
소스를 아래와 같이 작성 하였다.
public class PlainBean{ private String Property; //Property 변수를 정의 public String getProperty(){ //Property 변수를 리턴 return Property; } public void setProperty(String Property){ //getProperty() 에서 받아온 변수를 사용 this.Property = Property; } }
코드를 참고하면, 생성자는 어떠한 매개변수도 갖지 않는다. 자바빈에서 변수값을 자동으로
getProperty 메소드를 연결해 값을 가져와 setProperty 메소드를 연결해 값을 설정한다.
특정한 기술과 환경에 종속 되지 않기 때문에 깔끔해지고, 위와 같은 성격때문에
POJO로 개발된 코드는 자동화된 테스트에 매우 유리하다. 그것이 객체지향적인 설계를 자유롭게 적용할 수 있게 만든다.
자바스프링의 경우 POJO 프레임워크라고 하는데, 하이버네이트와 자바스프링을 대표적인 포조 프레임워크라고 한다.
다음은 IOC/DI 이다.
IOC = 제어의 역전 (INVERSION OF CONTROL) !!!
IOC는 이미 서블릿 컨테이너와 EJB 컨테이너에서 이미 사용하고 있는 개념이다.
아... 서블릿, 컨테이너,, 다음 포스트에서 이어서 써야지...
(너무 기니까 읽기 지루하다....)
인용/참고 :
http://kwakyc87.tistory.com/72
http://egloos.zum.com/ingenuity/v/3100396