스프링 POJO 및 콘셉트

최민영·2024년 9월 25일

IntelliJ

목록 보기
25/30

POJO (Plain Old Java Object)
자바로 생성하는 순수한 객체를 의미
객체 지향적인 원리에 충실하며 환경과 기술에 종속되지 않고 필요에 따라 재활용 가능하도록 설계된 오브젝트
getter와 setter로 구성된 가장 순수한 형태의 기본 클래스
<-> EJB(Enterprise JavaBeans) : 환경과 기술에 종속적, 가독성 떨어짐, 객체지향 감소, 확장성 상실, 다른 클래스 상속

POJO 프로그래밍의 장점

  • 환경이나 기술에 종속적이지 않으면서 재활용이 가능하고 확장성과 유연성을 갖춘 코드를 작성할 수 있다.
  • 코드를 간결하게 가져가며 디버깅도 쉬워진다.
  • 테스트가 단순해지며 객체 지향적인 설계를 적용할 수 있다.

POJO와 Spring
스프링 프레임워크에서는 POJO 프로그래밍을 지향하며, 이를 위해 IoC/DI, AOP, PSA를 지원하고 있다.

제어의 역전 IoC (Inversion of Control)
다른 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져와 사용하는 것

public class A {
	b = new B(); //A 클래스에서 B 클래스의 객체 생성
}
public class A {
	private B b; //어디선가 객체 b를 받아와서 할당
}

의존성 주입 DI (Dependency Injection)
제어의 역전을 구현하기 위해 사용하는 방법
스프링 컨테이너에서 객체를 생성해준다

public class A {
	@Autowired
    B b; //B를 A에 주입
}

Bean
스프링 컨테이너에서 관리하는 객체
@Component 어노테이션을 붙이면 해당 클래스를 스프링 컨테이너에서 빈 형태로 관리하도록 설정

@Component
public class MyBean {}

이때 빈의 이름은 클래스 첫 글자를 소문자로 바꾸어 관리한다 (MyBean -> myBean)

관점 지향 프로그래밍 AOP (Aspect Oriented Programming)
프로그래밍에 대한 관점을 핵심/부가관점으로 나누어 관심 기준으로 모듈화
부가관점은 핵심관점 이외의 기능이나 시스템 전반에 걸쳐 중복 및 공통적으로 발생하는 기능을 의미한다. 부가관점에 해당하는 로직을 모듈화해 두 관점을 분리해서 개발하며 프로그램의 변경과 확장에 유연성을 높이게 된다.

이식 가능한 서비스 추상화 PSA (Portable Service Abstraction)
스프링에서 제공하는 기술을 추상화해 어느 기술을 사용해도 일관되게 처리하도록 하는 것
DB에 접근하기 위한 기술 중 어떤 것을 사용하더라도 일관된 방식으로 DB에 접근하도록 인터페이스를 지원하는 것이 그 예이다.

0개의 댓글