-
[Spring Framework] 정의와 특징 ( DI, IoC, AOP)Back-End/Spring Legacy 2022. 9. 20. 10:51
스프링프레임워크 (Spring Framework)
: 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 스프링(Spring)이라고 불린다. 동적인 웹 사이트 개발하기 위한 여러가지 서비스를 제공한다.
스프링 프레임워크란?
1. 자바(JAVA) 엔터프라이즈 개발을 위한 오픈소스 애플리케이션 프레임워크이다.
2. 종속 객체를 생성해주고, 조립할 수 있는 프레임워크이다.
3. 자바 SE로 된 자바 객체(POJO)를 자바 EE에 의존적이지 않게 연결해준다.
더보기- JavaSE (Standarad Edition)
: 가장 기본이 되는 표준 에디션으로 JDBC, GUI, 네트워크 등 각종 API를 이용해 개발이 가능하다.
- JavaEE(Enterprise Edition)
: Java SE 플랫폼 위에 구축이 된다. 대규모, 확장 가능하고 안전한 네트워크 애플리케이션을 개발하고 실행하기 위한 API 및 런타임환경을 진행한다. Servlet, JSON,REST 반응형 클라이언트 등을 제공한다.
- POJO(Plan Old Java Object)
: 단순히 평범한 자바빈즈 객를 의미한다.
4. 우리나라 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 프레임워크의 기반 기술로서 쓰이고 있다.
스프링의 특징
1. 경량 컨테이너(크기와 부하의 측면)로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
2. 제어의 역행(IoC : Inversion of Control)
: 애플리케이션의 느슨한 결합을 도모하며, 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어 필요에 따라 스프링에서 사용자의 코드를 호출한다. 이는 프레임워크의 특징이기도 하다.
3. 의존성 주입(DI : Dependency Injection)
: 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다. ApplicationContext라는 존재가 필요한 객체들을 생성하고, 필요한 객체들을 주입해준다. 즉) 스프링을 활용하면 객체와 객체를 분리해서 생성하고 이를 엮는(wiring)작업을 하는 형태의 개발을 하게 된다.
4. 관점지향 프로그래밍(AOP : Aspect-Oriented Programming)
: 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
5. 애플리케이션 객체의 생명 주기와 설정을 포함하고 관리한다는 점에서 일종의 컨테이너(container)라고 할 수 있다.
: MyBatis나 Hibernate 등 완성도 높은 데이터베이스처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.
6. 트랜잭션 관리 프레임워크
: 추상화된 트랜잭션 관리를 지원하며 설정파일(xml, java, property 등)을 이용한 선언적인 방식 및 프로그래밍을 통한 방식을 모두 지원한다.
7. MVC 패턴
: 웹 프로그래밍 개발 시 거의 표준적인 방식인 SpringMVC라 불리는 모델-뷰-컨트롤러 패턴을 사용한다.
DispatcherServlet이 Controller 역할을 담당하여 HTTP 프로토콜로 들어오는 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러라고 정의할 수 있다. 적절한 서비스에 분산시켜주며 이를 각 서비스들이 처리하여 결과를 생성하고 그 결과는 다양한 형식의 View 서비스들로 화면에 표시될 수 있다.
더보기Dispathcer-Servlet의 장점
: Spring MVC에서 DispatcherServlet이 등장함에 따라 web.xml의 역할을 상당히 축소시켰다. 과거에는 모든 서블릿을 URL 매핑을 위해 web.xml에 모두 등록해줘야 했지만 DispatcherServlet이 해당 애플리케이션으로 들어오는 모든 요청을 핸들링해주고 공통 작업을 처리하면서 상당히 편리하게 이용할 수 있게 되었다. 개발자는 컨트롤러만 구현해 두면 DispatcherServlet가 알아서 적합한 컨트롤러를 위임해준다.
8. 공통 부분의 소스 코딩이 용이하며 확장성도 매우 높다.
스프링 의존성 주입 동작 이해하기
1. 스프링 프레임워크가 시작되면 먼저 스프링이 사용하는 메모리 영역을 만들게 되는데 이를 컨텍스트(Context)라고 한다. 스프링에서는 ApplicationContext라는 객체가 만들어진다.
더보기닫기ApplicationContext를 스프링 컨테이너라고 한다. ApplicationContext는 BeanFactory 인터페이스의 하위 인터페이스이다. 즉, ApplicationContext는 BeanFactory에 부가기능을 추가한 것이다.
2. 스프링은 자신이 객체를 생성하고 관리해야 하는 객체들에 대한 설정이 필요한데 이에 대한 설정은 root-context.xml 파일이다.
3. root-contxt.xml에 설정되어 있는 <contxt:component-scan> 태그를 통해서 'org.zerock.sample' 패키지를 스캔하기 시작한다.
4. 해당 패키지에 있는 클래스들 중 스프링이 사용하는 @Component라는 어노테이션이 존재하는 클래스의 인스턴스를 생성한다.
반응형'Back-End > Spring Legacy' 카테고리의 다른 글
[Spring MyBatis] selectKey 사용하기 (0) 2022.11.17 [MyBatis] resultType 객체 별칭(alias) 관리 (0) 2022.11.16 [5-ch18 Spring AOP] 설정, execution, args, @Around, @before, @AfterThrowing (0) 2022.09.07 [5-ch18 Spring] AOP 개념, 용어(JoinPoint, Pointcut, Advice..) (0) 2022.09.07 [4-ch17 댓글 처리 ④] 댓글의 페이징 처리 (인덱스 생성, 화면 처리) (0) 2022.09.06