
Java 애플리케이션 개발을 편하게 할 수 있도록 도와주는 오픈 소스 애플리케이션 프레임워크
웹 애플리케이션을 만들고, DB 접근을 편리하게 하기 위해? ❌
웹 서버를 자동으로 설정해 주도록 하기 위해? ❌
스프링은 JAVA 언어 기반의 프레임워크입니다.
JAVA의 가장 큰 특징은 바로 ‘객체 지향’!
Spring은 좋은 객체 지향 애플리케이션 개발을 도와주는 프레임워크입니다.
스프링이 등장하기 이전에는 비즈니스 로직을 구현하기 위해 기술 자체에 대한 공부를 추가적으로 해야만 했습니다.
비즈니스 로직을 구현하는 기술 자체가 복잡하고 어려웠기 때문입니다.
그러나, 스프링은 이전 기술에 비해 사용 방법이 상대적으로 덜 복잡합니다!
따라서, 개발 초기에 기본적인 설정과 적용시킬 기술들만 잘 선택을 해준다면? 기술보다는 애플리케이션의 로직 자체에 더 집중하여 비즈니스 로직을 구현할 수 있습니다.
스프링의 가장 큰 특징은 POJO 프로그래밍을 지향한다는 것입니다.
여기에서 POJO란, Plain Old Java Object, 즉 순수 Java만을 통해서 생성한 객체를 의미합니다.
순수 Java 만을 사용한다는 것은 Java 및 Java의 스펙에 정의된 기술만 사용한다는 의미입니다.
❌
어떤 객체가 외부의 라이브러리나 외부의 모듈을 가져와서 사용하고 있다면, 그 객체는 POJO라고 할 수 없습니다.
✅
POJO는 말 그대로, 다른 기술을 사용하지 않는 순수한 Java만을 사용하여 만든 객체인 것입니다.
// 순수한🌱 pojo 객체
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
}
외부 라이브러리를 import하여 사용하고 있는 객체가 있다고 가정해봅시다.
import 외부라이브러리;
❌ 이 객체는 순수 Java 외에 외부 기술을 사용하고 있으므로, POJO가 아닙니다. ❌
import 외부라이브러리; // 근데 곧 없어질 예정, 기능이 수정됨
만약 이 객체가 사용하고 있는 기술이 Deprecated(곧 사라짐)되거나 개선된 신 기술이 등장하여 기존 기술과 관련된 코드를 모두 고쳐야 하는 상황이 발생한다면 😱
해당 기술을 사용하고 있는 모든 객체들의 코드를 전부 바꿔주어야만 합니다.
이는 해당 객체가 외부 모듈에 직접적으로 의존하고 있기 때문에 자연스럽게 발생하는 문제입니다. 😤
순수 Java만을 사용하여 만든 객체이므로 특정 기술이나 환경에 종속되지 않습니다. ✅
따라서, 외부 기술이나 규약의 변화에 얽매이지 않아, 보다 유연하게 변화와 확장에 대처할 수 있습니다. ✅
이러한 POJO를 사용하여 비즈니스 로직을 구현하면 객체지향 설계를 제한없이 적용할 수 있으며, 코드가 단순해져 테스트와 디버깅 또한 쉬워집니다. ✅
이처럼 비즈니스 로직을 구현하는 데에 POJO를 적극적으로 활용하는 프로그래밍 패러다임을 POJO 프로그래밍이라고 합니다.
다음 시간에는 POJO 프로그래밍을 위한 Spring의 기술들에 대해 알아보겠습니다.
reference