컴퓨터 공학/프로그래밍 과외 기록

[스프링 프레임워크 과외] 2. 프레임 워크 개요

ITISIK 2021. 10. 4. 00:57
반응형

1. 프레임 워크를 사용하는 이유

1) 아키텍처에 대한 골격 코드를 제공하기 때문에, 비즈니스 로직에 대한 구현 시간이 빨라진다.

2) 아키텍처가 동일하므로 유지보수 및 관리가 쉽다.

3) 개발자 간 역량 차이를 어느정도 완화 해줄 수 있다.

 

2. 스프링 프레임 워크의 특징

한 줄 요약 : IoC와 AOP를 지원하는 경량의 컨테이너 프레임워크

 

1) 경량(LightWeight) : jar로 작성된 여러개의 가벼운 모듈로 구성되어 있으며, POJO형태의 가벼운 객체를 관리하기 때문에 기존의 EJB에 비해서 가볍다.

 

2) IoC(Inverse of control) | 제어의 역행 : 객체 생성을 자바 코드로 직접 처리하는 것이 아니라 스프링의 핵심인 컨테이너가 대신 처리하기 때문에 객체간의 의존관계가 컨테이너에 의해 관리되므로 결합도가 떨어진다.

 

3) AOP(Aspect Oriented Programming) | 관점 지향 프로그래밍 : 비즈니스 로직에 의해 각 메소드 마다 반복해서 나타나는 공통 로직을 별개의 클래스로서 분리하여 하나로 응집 시켜서 관리할 수 있는 방식이다.

 

4) 컨테이너(Container) : 컨테이너는 스프링 프레임 워크에서 가장 핵심적인 부분이기 때문에 잘 알아야 한다. 컨테이너는 특정 객체의 생성과 관리를 담당하며 객체 운용에 필요한 다양한 기능을 제공한다. 일반적으로 서버 안에 포함되어 배포 및 구동된다. 대표적인 컨테이너 두 가지 중 하나는 Servlet 객체를 생성하고 관리하는 Servlet 컨테이너(Tomcat에도 포함되어 있다.)이고, 다른 하나는 EJB 객체를 생성하고 관리하는 EJB 컨테이너가 있다. 스프링 전체도 각 객체의 생성과 운용, 의존관계를 관리 한다는 점에서 하나의 컨테이너로 볼 수도 있다.

 

c.f.) 서블릿 컨태이너는 다음의 순서에 따라 동작한다.

1) WEB-INF/web.xml 파일을 로딩하여 구동

2) 브라우저로부터 특정 URL(/index.do) 요청 수신 (e.g. <url-pattern>/index.do</url-pattern>)

3) web.xml 파일의 <servlet-class> 요소의 값을 찾아 객체를 생성하고 doGet() 메서드 호출

4) doGet() 메서드 실행 결과를 클라이언트 브라우저로 전송

 

 

3. 결합도 낮추는 방법

  결합도란, 하나의 클래스가 다른 클래스와 많이 연결되어 있는 정도를 의미한다. 결합도가 높을수록 프로그램의 유지보수가 어려워진다.

 

1) 다형성 이용

  수시로 교체하고자 하는 두 클래스의 부모격이 되는 interface를 만들고, 각 클래스는 해당 인터페이스를 implements 받아 구현되도록 작성한다. 하지만 이 방법도 결국 Java 소스코드를 수정해야 한다는 단점이 있다.

 

2) 디자인 패턴 이용

  다형성 이용의 단점을 보완하기 위해서는 Factory 패턴을 적용해야 한다. 이를 위해서 BeanFactory 클래스를 추가한다. BeanFactory 클래스의 getBean() 메서드는 입력받은 beanName(String)에 따라 각기 다른 객체를 반환하도록 작성되어 있어서 프로그램의 결합도를 낮출 수 있고, Java 소스코드를 수정하지 않아도 된다.

 

 

반응형