프로그래밍을 하기 위한 어떤 틀이나 구조를 제공하는 것을 Framework라고 한다.
1.애플리케이션의 통신이나 데이터를 데이터 저장소에 저장하는 등 개발자가 애플리케이션의 핵심 로직을 개발하는 것을 집중할 수 있게 해준다.
2.정해진 규약이 있어 애플리케이션을 효율적으로 관리할 수 있다.
내가 사용하고자 하는 Framework의 대한 학습이 필요하다.(러닝커브)
Framework의 규약을 벗어나기 어렵기 때문에 자유롭고 유연한 개발이 어렵다.
애플리케이션을 개발하는데 사용되는 일련의 데이터 및 프로그래밍 코드다. 사전적 의미로 도서관이라는 의미를 갖지만 소프트웨어 관점에서도 Library는 애플리케이션을 개발할 때 필요한 기능을 미리 구현해놓은 집합체라고 생각할 수 있다.
차는 차체를 구성하는 Frame 과 다양한 부품들의 집합체이다. 이처럼 Framework는 차체, 즉 자동차의 뼈대를 의미며 Library는 자동차에서 다양한 기능을 제공하는 부품을 의미한다. 소프트웨어 관점에서 Framework를 교체하는 일은 어렵지만, Library는 쉽게 교체가 가능하며 필요한 Library들을 선택적으로 사용할 수 있다.**
POJO는 JAVA로 생성하는 순수한 객체를 의미한다.
POJO를 이용해서 프로그래밍 코드를 작성하는 것을 의미한다. 하지만 단순히 순수 자바 객체를 사용해서 프로그래밍 코드를 작성한다라고 POJO 프로그래밍이라고 볼 수는 없다.
POJO 프로그래밍은 2가지 기본적 규칙을 지켜야 한다.
1.Java나 Java의 스펙(사양)에 정의된 것 이외에는 다른 기술이나 규약에 얽매이지 않아야 한다
2.특정 환경에 종속적이지 않아야 한다.
애플리케이션 흐름의 주도권이 뒤바뀐 것을 IoC라고 한다.
기본적으로 개발자가 작성한 코드를 순차적으로 실행하는 것이 일반적 제어 흐름이다. 이와 반대로 일반적인 java 콘솔 어플리케이션의 경우 main() 메서드가 종료가 되면 애플리케이션의 실행이 종료가 된다. 하지만 서블릿 컨테이너 경우 클라이언트의 요청이 들어올 때 마다 컨테이너 로직이 서블릿을 실행시키기에 main()메서드가 필요가 없다. 이 경우 애플리케이션의 주도권은 서블릿 컨테이너에게 있기에 이를 두고 서블릿과 애플리케이션 간에 IoC의 개념이 적용 되어 있는 것이다.
그렇다면 Spring 에는 이 IoC의 개념이 어떻게 적용이 되어 있을까? 답은 DI(Dependency Injection) 이다.
DI란 Dependency '의존하는', '종속하는' 이란 의미와 Injection '주입'이라는 의미를 합친 단어로 Dependency Injection, 즉 '의존성 주입'이라는 의미를 가지고 있다.