ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring 역사 #2 (POJO)
    백엔드/SPRING MVC 2024. 8. 20. 15:04
    POJO

     

    POJO ?

    • Plain Old Java Object
    • 말그대로 , 순수 자바 객체를 이용한 프로그래밍 방법을 의미한다.
    • EJB와 같은 프레임워크에 종속된 객체(상속, 인터페이스)가 아닌 순수 JAVA 객체를 이용하자는 뜻에서 생기게 됨
      • (여러가지 종속된 객체의 경우 간단한 객체더라도 무거운 객체로 변경이 되기 때문에 비효율적이라고 판단)
      • 쓸데없는 부분들은 제거하고, 필요한 부분에만 사용하자 -> 의존성 주입 이용 (어노테이션)

     

     

     

    POJO 위반 사례

    •  1. 미리 정의된 클래스의 확장
    public class Test extends javax.servlet.http.HttpServlet {...
    • 2. 미리 정의된 인터페이스의 구현
    public class Test implements javax.ejb.EntityBean{ ...
    • 3. 미리 정의된 애너테이션을 포함
    @javax.persistence.Entity public class Test{...

     

     

     

    POJO 예시

    • getter, setter를 이용한 순수 자바 객체 (종속적이지 않음)
      • 상속, 인터페이스 x
    ublic class HelloService {
        private String message;
    
        public GreetingService(String message) {
            this.message = message;
        }
    
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    
        public void hello() {
            System.out.println("info: " + message);
        }
    }

     

     

    Spring과 POJO

    • Spring 은 POJO 프로그래밍을 작성하기 위해서 IoC (Inversion Of Control) / DI (Dependency Injection) , AOP, PSA를 지원함
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class AppConfig {
    
        @Bean
        public HelloService helloService() {
        	//DI ( = 생성자 주입)
            return new HelloService("Hello, Spring!");
        }
    }
    • @AppConfig 는 스프링의 설정 클래스
    • @Bean 을 이용해서 HelloService 빈을 생성
    • IOC (제어의 역전)을 통해 HelloService의 객체 관리를 spring에게 위임
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    
    public class MainApp {
        public static void main(String[] args) {
            ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
            HelloService helloService = context.getBean(HelloService.class);
            helloService.hello();
        }
    }
    • Main 메서드에서 HelloService의 빈을 가지고와서 원하는 메서드를 호출함
    • 이로써, Spring은 POJO를 지키며 프로그래밍을 가능하게 만듬

    '백엔드 > SPRING MVC' 카테고리의 다른 글

    Spring Bean (+ Bean Factory)  (0) 2024.08.21
    Spring 컨테이너  (0) 2024.08.21
    SOLID 규칙 적용 (+순수 자바 버전 , spring)  (0) 2024.08.21
    Spring 역사 #3 (Spring의 탄생)  (0) 2024.08.20
    Spring 역사 #1 (EJB)  (0) 2024.08.20
Designed by Tistory.