본문 바로가기

공부함

[Spring] Spring framework는 무엇인가

스프링 프레임워크?

- 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크이다. ( application 응용 framework 뼈대 ) 

- 기업에서 필요로 하는 규모의 어플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션이다

- 동시에 여러 사용자로부터 발생하는 대규모 데이터의 처리와 트랜잭션 처리가 용이하다.

- Spring Framework는 경량 컨테이너로 자바 객체를 담고 직접 관리한다. 

( 스프링컨테이너는 객체를 담는 그릇과 같다.)

- 객체의 생성 및 소멸 그리고 라이프사이클을 관리하며 

- 언제든 Spring 컨테이너로부터 필요한 객체를 가져와 사용할 수 있다.

- Spring framework는 IOC기반이다.

 

IOC?

inversion of Control의 약자로 제어의 역전을 의미한다.

- 일반적인 프로그램의 흐름은 아래처럼 각 객체들이 프로그램의 흐름을 결정하고 객체를 구성한다.
그래서 모든 작업을 사용자가 제어야해야한다.

객체의 결정 및 생성 -> 의존성 객체 생성 -> 객체 내의 메소드 호출  -> ( 반복 ) 객체의 결정 및 생성

IOC는 사용자가 제어하지 않고 어떤 특정한 객체에게 권한을 주어 객체의 생성부터 종료까지 모든 객체의 제어권을 넘기는 것을 의미한다 .

IOC는 DI와 DL에 의하여 구현된다.

 

DL (Dependency Lookup) 의존성 검색

-  객체의 관리를 위해 컨테이너에 저장해 둔 데이터를 컨테이너에서 제공하는 API로 원하는 빈을 검색하는 방법을 의미

 

DI (Dependency Injection) 의존성 주입

- 객체가 서로 의존하는 관계가 되도록 외부에서 의존성을 주입하는 것을 의미한다.객체지향 프로그램에서의 의존성이란 하나의 객체가 다른 객체를 사용하고 있음을 의미한다.IOC에서의 DI는 각 클래스 사이에 필요로 하는 의존관계를 빈 설정 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것을 의미한다

 

 

특징 1  - POJO 

- Plain Old Java Object : 기본적인 옛 자바 오브젝트

- getter/setter를 가진 단순 바자 오브젝트이다. - 의존성이 없고, 테스트 및 유지보수가 편리하다.- 다양한 설계와 구현이 가능하다.

 

특징 2 - AOP 

- Aspect Oriented Programming : 관점지향 프로그래밍.

- 소프트웨어 개발 프로세스에서 자주 사용되던 OOP(Object Oriented Programming)를 적용할 때 발생하는 중복코드와 가독성이 떨어지는 부분, 확장성, 유지보수성이 떨어지는 문제를 보완하여 AOP를 만들었다.

- AOP는 핵심기능과 공통기능을 분리시켜 핵심로직에 영향을 끼치지않도록 공통기능을 끼워 넣는 개발형태이다.

- 무분별하게 중복되는 코드를 한곳에 모아둔다. (중복되는 코드의 제거 가능 )

- 공통기능을 한곳에 보관한다. (공통기능 중 일부만 수정해도 그 기능을 사용하는 모든 기능의 공통기능 부분이 쉽게 수정할 수 있다. )

- 효율적인 유지보수가 가능하고 재활용성이 극대화 된다.

 

특징 3- MVC

-Model View Controller 구조로 사용자 인터페이스와 비즈니스 로직을 분리하여 개발하는 것을 의미한다. 

- 소스를 분리하여 각 소스코드의 목적을 명확히하고 유지보수를 용이하게 한다.

- 모듈화 하여 재사용 가능하도록 설계해야한다.

- Model ( service, DAO )

    : 데이터 처리를 담당하는 부분. Service영역과 DAO영역이 있다.

    ㄴ service부분의 주의사항

       => 불필요한 http 통신을 하지 않아야 한다 / request, response 객체를 매개변수로 받으면 안된다. / view에 종속적인 코드가 없어야 한다. / view가 변경되어도 service는 재사용할 수 있어야 한다.

    ㄴ model은 view 또는 controller의 정보를 가지고 있으면 안된다.

 

- view

   : 사용자 interface를 담당한다. 사용자에게 보여지는 부분이다.

   : model의 데이터에 대한 시각화를 담당한다.

   : 요청을 보낼 Controller정보만 알고있어야 한다.

   : Model, Controller에 구성요소가 기재되지 않아야 한다.

 

- Controller 

  : view에서 받은 요청을 가공하여 model에 전달한다. Model로 받은 결과를 view로 넘겨주는 역할을 한다.

  : 모든 요청 에러와 모델 에러를 처리한다, 

  : view 와 model의 정보를 알고있어야한다.

 

 

Spring Framework의 구조

spring core? 

spting container을 의미한다. 

Bean Factory Container에 IOC패턴을 적용하여 객체 구성부터 의존성 처리까지 모든 일을 처리하는 역할을 한다.

 

Spring Context ? 

context 정보들을 제공하는 설정파일이다.

JNDI, EJB, Validation, Scheduiling, Internalization 같은 엔터프라이즈 서비스들을 포함한다.

 

Spring AOP ? 

관점지향 프로그래밍을 할 수 있고. AOP를 적용할 수 있게 도와주는 모듈이다. 

 

Spring DAO?

Data Access Object  로서 Database Data에 접근하는 객체이다.

Spring JDBC DAO가 추상 레이어를 지원하여 코딩이나 예외처리 부분을 간편화 하고, 일관된 방법으로 코딩할 수 있는 기능을 제공한다.

 

Spring ORM ?

Object relational mapping 으로서 객체와의 관계를 설정한다. 

대표적으로 Ibatis, Hibernate, JDO 를 사용하도록 지원한다. 

 

Spring Web?

Web Application 개발에 필요한 기본 기능을 제공한다. 

 

Spring MVC

model 구조로 application을 만들 수 있도록 지원한다.

웹 응용 프오그램을 작성하기 위해 완전한 기능을 갖춘 MVCrngusdmf wldnjsgksek .

JSP, Veloity, Tiles, iText 등 POI를 포함한 많은 기술 뷰를 지원한다. 

 

 


[ 참고 ] 

 

https://goddaehee.tistory.com/203

 

 

https://khj93.tistory.com/entry/Spring-Spring-Framework%EB%9E%80-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-%ED%95%B5%EC%8B%AC-%EC%A0%95%EB%A6%AC