Framework
개발자마다 개발하는 스타일이 모두 다르다.
그래서 기본 형식 없이 개발을 하면 유지보수하는데 너무 어렵다.
그래서 아키텍처 제공하고 개발자가 내용(비즈니스 로직)을 덧입히는 형식으로 개발을 하게끔 Framework를 만들었다.
개발자가 바뀌어도 구조자체는 변하지 않기에 유지보수가 보다 용이하다.
Framework의 장점
프로그램의 구현이 빠르다.
검증된 아키텍처의 재사용으로 프로그램의 일관성이 유지된다.
관리가 용이하다.
오픈소스로 구성되어있다.
- 상속하여 커스터마이징이 가능하다.
Spring의 특징
가볍다
라이브러리의 크기가 작다.
POJO를 이용한다.
POJO(Plain Old Java Object): Class path를 필요하지 않는 Java Object이다.
POJO는 메모리 사용량이 매우 작다.
규칙을 지키기 위해서 여러 객체가 추가적으로 생성되기 때문이다.
Servlet을 사용하기 위해서 request, response, ServletConfig 등이 생성된다.
POJO는 아무런 규칙이 존재하지 않는다.
- 규칙 : 제어자, 메소드 이름, 파라미터 등이 정해져있는 것.
컨테이너다
객체를 생성하고, 생성된 객체를 관리한다.
xml에 등록된 클래스 객체가 컨테이너 생성시에 바로 생성된다.(Pre Loading)
각 객체는 Heap 메모리에 저장된다.
bean 태그의 속성값으로 laze-init=”true”을 지정할 경우 Lazy Loading 한다.
Servlet은 Lazy Loading 특성으로 사용자에게 호출되어야만 코드를 읽는다.
내부적으로 Map이 구현되어 있고, id를 key값으로 사용해서 각 value를(객체) 관리한다.
- 그래서 xml이 어떻게 작성되어있냐에 따라 컨테이너의 동작 방식이 달라진다.
IoC(Inversion of Controller)
역제어라는 뜻이다.
- 반대의 경우를 순제어라고 하며 개발자가 코드로 직접 객체 생성을 명시하는 것이다.
컨테이너가 객체 생성을 대신한다.
이를 통해 자바 소스의 변동 없이 유지보수가 가능하다.