스프링프레임워크란
스프링 프레임워크란?
쉽게 말하자면 스프링은 개발자가 좀 더 편하고 손쉽게 개발할 수 있도록 해주는 개발도구이다.
예를들자면 아래 공구중 무엇이 더 손쉽고 편리하게
스프링 프레임워크는 AOP, PSA, IoC, DI 기술을 바탕으로 POJO를 지향하는 경량의 오픈소스 프레임워크다.
POJO란 Plain Old Java Object로
EJB의 단점을 비교하여 칭하게 된 단어가 POJO 이다
POJO를 알려면 EJB를 자세히알아야한다고하는데
대략 설명을 하자면
EJB에서 빈을 만들기 위해서는 다양한 부모 클래스를 알아야 하고 그에 맞는 인터페이스를 구현해야 했다고 한다.
하지만 자바의 특징중에 하나인 객체지향이라는 말처럼 단순한 자바객체를 이용해 만드는 것을 목표로 POJO 라는 말이 탄생하게되었다.
순수하게 setter, getter 메소드로 이루어진 Value Object성의 Bean을 말한다.
이런 특성을 살려서 만든 프레임워크가 하이버네이트, 스프링 프레임워크등이 대표적으로 있다.
POJO 의 특징으로는
1. 부모 클래스 확장하지않는다.
2. 인터페이스 구현을 강제하지 않는다.
3. 어노테이션을 포함하지않는다.
등등 이 있다
하지만 영속성과 같은 기능이 작동할수 있도록 어노테이션을 사용하도록 하는곳이있다고한다.
자세히파고들기엔 너무 깊다....
결론적으로 정리하자면
POJO 는 기존에 있던 복잡한것들을 버리고 순수 객체지향으로 간단한 객체를 가지고 개발을 하는것
스프링프레임워크는
POJO를 기반으로
AOP, PSA, IoC, DI 기술을 사용한다
AOP : 관점지향
PSA
IoC/DI : Inversion of Control 제어의 역전, 객체의 생성 및 관계설정을 개발자가 직접하지 않고 대신 프레임워크가 맡아서 처리하는 것을 말한다.
왜 객체관리를 개발자가 하지않을까?
-
예를들어 원래 기존 방법은 프로젝트에서 내용 변경 요청이 오면 코드에서 객체를 또 만들거나 그 객체 내용을 일일이 바꿔줘야한다. 이는 유지보수나 재활용 또는 코드변경 하는데있어서 개발자에게 큰 번거로움이 생긴다. 하지만 인터페이스라는것으로 의존관계를 만들어서 관계를 느슨하게 만들어(약결합) 필요할때만 사용할수있도록 선택권을 준다.
이전에는 객체 하나하나에연결을해서 결합도가 강결합이되어 변화가있을때 각 객체안에서 하나 하나 처리해 번거롭게처리가됬다.
하지만 스프링은 스프링빈 컨테이너를 가지고있어서 선언이나 설정만으로 객체를 보관한다
커맨드 객체의 예로 폼태그에서 파라미터가 전송이 되었을때 객체를 getter setter를 만드는것 만으로 컨터이너에서 보관해서 필요할때 사용이가능하다. 그렇기때문에 파라미터를 받을때 httpservletrequest로 일일이 get set을 할필요없이 getter setter로 자동 생성및 저장이된다.
강결합 = 본드로 연결
약결합 = 레고블록처럼 착결합될수있음 재활용가능