린아저씨의 잡학사전

스프링 책을 보다보면 POJO 기반의 구성이 특징이라는 내용을 볼 수 있다.


하지만 책의 내용만으로는 POJO가 무엇인지 당췌 와닿지 않아서 열심히 구글링을 해보고


책 보다 훨씬 이해 잘되는 포스팅을 찾아 정리해보려 한다.


출처는 http://m.blog.naver.com/weekamp/186678831   헬리코님의 블로그이다.





POJO = Java Bean


여기서 Java Bean은 Sun의 Java Beans나 EJB의 Bean을 뜻하는 것이 아닌

순수하게 setter, getter 메소드로 이루어진 Value Object성의 Bean을 의미.



예를 들면 이와 같은 코드이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class SimpleBean {
    private String name;
    private String age;
 
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return this.name;
    }
 
    public void setAge(String age) {
        this.age = age;
    } 
    public String getAge() {
        return this.age;
    }
 
}
cs



즉, 이클립스를 통해 자동으로 생성하던 깡통 빈 클래스를 통해서 생성된 객체.


그것이 바로 스프링에서 말하는 POJO인 것이다.



그렇다면 POJO가 스프링의 중요한 특징 중에 하나인 이유는 무엇인가?


그것은 클래스 상속을 강제하지 않고, 인터페이스 구현을 강제하지 않으며, 애노테이션 사용을 강제하지 않는다.


즉 개발자는 특정한 라이브러리나 컨테이너의 기술에 종속적이지 않고, 가장 일반적인 형태로 코드를 작성할 수 있다는 것이다.


이것은 생산성에도 유리하고, 코드에 대한 테스트 작업 역시 좀 더 유연하게 할 수 있다는 장점이 생긴다.





POJO가 아닌 대표적인 객체


public HelloServlet extends HttpServlet{......}


자바 서블릿 코드를 작성할 떄는 이렇게 반드시 HttpServlet을 상속 받아야한다.


서블릿 프로그래밍을 한다는 이유로 객체지향 프로그래밍의 핵심적인 기능 중 하나인 상속을 빼앗긴 것이나 마찬가지이다.


코드를 작성하고 있는 개발자가 직접 상속을 사용할 수 있는 기회가 없어진것이다.


또한 extends HttpServlet이 추가되면서 이 코드를 이해하기 어려워진다.


HttpServlet에서 어떤 기능을 제공하는지 어떤 코드를 어떻게 재사용해야 할지 판단하기도 어렵다.






공유하기

facebook twitter kakaoTalk kakaostory naver band