지난번에 SW아키텍처로 고통받고 있다는
포스팅을 올린적이 있는데
이번에는 스프링(Spring)이 저를 괴롭히네요 :(
"스프링? 봄? 용수철? 그게 뭔데?"
"그걸 왜 배워야돼?"
라는 것도 잠시
효율적인 SW개발을 위해서는
배워두는것이 좋겠다 생각하여
무작정 배우기 시작합니다.
과거 자바 개발자들은 EJB(Enterprise Java Bean)이라는
서비스를 이용하여 개발을 하였다고 합니다.
이 EJB는 WAS라는 웹컨테이너를 사용하였는데
경제성으로나 효율성으로나 많이 불편하였다고 합니다.
이것을 개선한 경량화 프레임워크가
Spring(스프링)이라고 합니다.
스프링은 J2E의 기능을 지원하고
가벼우며 톰캣이라는 웹컨테이너를 사용하여
경제성이 EJB보다 뛰어나다는 장점이 존재한다고 합니다.
또한 프레임워크 자체가
아키텍처의 골조역할을 하기 때문에
빠른 개발도 가능하다고 합니다.
이외에도 스프링의 주요 특징인
DI(Dependency Injection) 의존성 주입,
AOP(Aspect Oriented Programming)과 같은
기능을 지원하고 있습니다.
자바언어 기반으로 만들어졌기 때문에
자바의 객체를 담고 있는 컨테이너가 존재하며
객체의 생성, 소멸과 같은 생명주기를 관리합니다.
DI에 대해서는 의존성 주입 패턴을 사용하는데
설정파일(bean.xml / instance=bean)을 통해서
의존관계를 설정해주는 식입니다.
AOP와 같은 경우
트랜잭션, 로깅, 보안과 같은
엔터프라이즈 애플리케이션에서
공통으로 필요로 하는 기능을 분리하여
각 모듈에 적용할 수 있도록 하는 기능입니다.
또한 스프링은 POJO라는 기능을 지원하는데
이는 Plain Old Java Object로 설명할 수 있으며
특정 인터페이스나 클래스를 상속받지 않는
순수한 자바 객체입니다.
따라서 결합도(?) 종속도(?)를
낮출 수 있다는 장점이 존재합니다.
이외에도 영속성과 관련된 다양한 API
(JDBC, IBatis, MyBatis, JSP, Hibernate)
연동을 지원합니다.
여기까지가 스프링의 간단한 개요라고 하는데
솔직히 아직은 무슨말인지 하나도 모르겠습니다.
특히 DI 같은 경우 코드를 통하여
기존의 객체 이용방식(A has a B)이 아닌
xml을 통한 Injection 형태라는 것을
알게되었지만
그 외의 나머지는 아직 잘 모르겠습니다 :(
프로그래밍 너무 어려워...