POJO(Plain Old Java Object)는 특정 프레임워크나 환경에 종속되지 않고 순수한 자바 언어로 작성된 객체를 의미합니다. 스프링을 비롯한 다양한 프레임워크에서 POJO는 프레임워크에 의존하지 않고 독립적인 비즈니스 로직을 작성할 수 있도록 하는 객체로, 개발자가 쉽게 사용할 수 있는 단순한 구조를 갖추고 있습니다.
getter와 setter 메서드를 통해 필드에 접근하고, 복잡한 상속 구조나 프레임워크의 특별한 인터페이스를 구현하지 않습니다. 단순한 클래스 구조를 갖추고 있어 유지보수가 용이합니다.스프링 프레임워크는 POJO를 기반으로 동작하며, POJO 객체를 관리하고 DI(Dependency Injection)와 AOP(Aspect-Oriented Programming)를 통해 객체 간의 관계를 설정하고 로직을 보조하는 방식으로 개발이 이루어집니다. 스프링은 객체 간의 관계 설정 및 부가적인 기능을 제공하면서도 POJO의 단순성을 유지할 수 있도록 설계되었습니다.
아래는 POJO의 예제로, 단순한 User 객체를 보여줍니다.
public class User {
private String name;
private int age;
public User() {}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void printUserInfo() {
System.out.println("User: " + name + ", Age: " + age);
}
}
이 User 클래스는 순수하게 자바 표준만을 사용하여 작성된 POJO입니다. 스프링 IoC 컨테이너에 의해 빈으로 관리될 때도, 스프링은 이 객체에 아무런 변경을 가하지 않고 필요한 의존성을 주입하거나 초기화 메서드를 호출하는 방식으로 다룰 수 있습니다.
POJO는 코드의 독립성과 유지보수성을 보장하면서도 스프링과 같은 프레임워크가 제공하는 다양한 기능을 쉽게 활용할 수 있게 해줍니다. 이를 통해 개발자는 비즈니스 로직에만 집중할 수 있으며, 프레임워크에 종속적이지 않은, 단순하고 재사용 가능한 코드를 작성할 수 있습니다.