[SPRING] 스프링 첫째날
MVC
MVC는 “Model-View-Controller”의 약자입니다. 소프트웨어 디자인 패턴 중 하나로, 소프트웨어를 구조화하고 모듈화하는 데 사용됩니다. 각 구성 요소는 다음과 같은 역할을 합니다:
- 모델(Model): 데이터와 데이터를 처리하는 비즈니스 로직을 담당합니다. 이는 애플리케이션의 상태와 동작을 나타내는데 사용됩니다.
- 뷰(View): 사용자 인터페이스의 시각적 표현을 담당합니다. 사용자에게 정보를 표시하고 모델의 상태를 표시하는 역할을 합니다.
- 컨트롤러(Controller): 사용자 입력을 처리하고 모델 또는 뷰에 대한 업데이트를 조정합니다. 사용자의 요청에 따라 모델을 업데이트하고 새로운 뷰를 생성하거나 기존의 뷰를 업데이트하는 등의 작업을 수행합니다.
MVC는 각 요소 간의 역할을 분리하여 애플리케이션을 유지보수하고 확장하기 쉽도록 도와줍니다. 이는 소프트웨어의 코드를 보다 구조화되고 유연하게 만들어줍니다.
OSI 7계층
네트워크 7계층은 OSI(Open Systems Interconnection) 모델로 알려져 있으며, 컴퓨터 네트워크에서 통신 프로토콜이 동작하는 방식을 이해하기 위한 개념적인 구조를 제공합니다. 각 계층은 특정한 기능을 수행하고, 위와 아래 계층과의 인터페이스를 통해 상위 및 하위 계층과 통신합니다.
여기서 각 계층과 그 역할을 간략히 설명하겠습니다:
- 물리 계층 (Physical Layer):
- 데이터를 전송하기 위한 물리적 매체와 관련된 기술을 정의합니다. 예를 들어, 전기적 신호의 전송, 케이블의 종류, 무선 주파수 등을 다룹니다.
- 데이터 링크 계층 (Data Link Layer):
- 물리 계층에서 전송된 데이터를 그룹화하고, 에러 검출 및 수정을 수행하여 신뢰성 있는 전송을 보장합니다. 이 계층은 네트워크 어댑터와 같은 하드웨어와 관련된 프로토콜을 다룹니다.
- 네트워크 계층 (Network Layer):
- 패킷의 라우팅, 전송 경로 선택, 네트워크 간 통신 등을 관리합니다. 주소 지정, 라우팅 테이블 구축 등이 여기에 속합니다.
- 전송 계층 (Transport Layer):
- 종단 간 통신을 제어하고, 데이터의 전송을 보장합니다. 주요 프로토콜로는 TCP와 UDP가 있으며, TCP는 신뢰성 있는 전송을, UDP는 신뢰성이 필요하지 않은 빠른 전송을 제공합니다.
- 세션 계층 (Session Layer):
- 통신 세션을 설정, 유지 및 종료합니다. 이 계층은 응용 프로그램 간의 동기화와 데이터 교환을 관리합니다.
- 표현 계층 (Presentation Layer):
- 데이터의 표현 방식을 정의하고, 응용 프로그램 간의 데이터 형식 변환을 처리합니다. 암호화, 압축, 형식 변환 등을 다룹니다.
- 응용 계층 (Application Layer):
- 최종 사용자와 상호 작용하는 응용 프로그램과 통신을 담당합니다. HTTP, SMTP, FTP, Telnet 등의 프로토콜이 여기에 속합니다.
이러한 계층화된 구조는 네트워크 시스템을 설계, 유지 및 확장하기 쉽게 만들어주며, 다양한 하드웨어 및 소프트웨어 환경에서 상호 운용성을 보장합니다.
Spring 소개
[EJB - Enterprise JavaBean]
엔터프라이즈 어플리케이션 개발을 단순화 한다.
선언적 프로그래밍 모델을 통해 트랜잭션이나 보안과 같은 개발의 기반 구조에 해당하는 여러 측명을 단순화시키기는 하지만 배치 기술자, 홈/리모드 인터페이스 구현 등과 같은 과도한 코드를 강제함으로써 다른방식으로 복잡해 졌다.
EJB는 분산 객체나 원격 트랜젝션 등의 복잡한 문제를 해결하기 위해 만들어졌기 때문에 복잡하다.
Spring은 로드 존슨이 만든 오픈 소스 프레임워크로서 저서인 Expert One-on-One:J2EE
Spring이 추구하는 것
- 복잡하고 무거운, J2EE 기술의 사용을 쉽고 가볍게 만들어주고, 자연스럽게 검증된 최상의 실천 사례들을 구현하도록 함으로써 좋은 프로그램이 작성될 수 있도록 유도한다.
- 기존의 잘 알려진 기술들을 프레임워크 내에서 일관된 방법으로 쉽게 사용할 수 있도록 돕는다.
Spring의 특징
- Spring은 EJB를 사용하건 하지 않건 관계없이 비즈니스 객체들을 효과적으로 구성하고, 관리하는 방법을 제공하는 데 초점을 맞춘다.
- Spring은 계층화된 아키텍처를 갖고 있으며, 그 중어떤 부분도 독립적으로 사용될 수 있도록 모듈화되어 있다. 뿐만 아니라 각각의 모듈은 일관된 방법으로 사용할 수 있기 때문에 한번 익숙해지고 나면 사용이 무척 쉽다.
- Spring은 전체 프로젝트의 설정을 관리할 수 있는 일관된 방법을 제공하므로써, 개발자드이 각종 프로퍼티 파일을 작성하지 않도록 유도한다. 이것은 loC라는 스프링의 특징 때문인데, 객체들간의 의존성이 따로 관리됨으로써 비즈니스 로직이 EJB로 개발되었건 일반자바 객체로 개발되었간 동일한 방법으로 해당 로직을 이용할 수 있는 이점도 추가된다.
IoC (Inversion of Control)
- 제어의 역전이라는 의미로, 스프링은 IoC 컨테이너를 통해 객체의 생명주기와 의존성 관리를 개발자가 아닌 프레임워크가 담당한다. 이를 통해 객체 간의 결합도를 줄이고 유연한 애플리케이션을 개발할 수 있다. 경량 프레임워크
- Spring 기반으로 작성된 애플리케이션은 Spring의API에 의존하지 않는다. 이것은 어떤 애플리케이션 서버와도 쉡게 연동되도록 하며, 심지어 스프링을 사용하지 않았을 때조차도 비즈니스 로직의 재사용이 가능해지는 요인이 된다.
- Spring은 AOP 지원을 통해 주요 비즈니스 로직과 시스템 전반에 걸친 기능 모듈을 완벽히 분리해내도록 도와주낟.
- Spring은 작성된 코드에 대한 유닛 테스트를 쉽게 할 수 있도록 도와준다.
{. :noice}
Enterprise Application 개발을 겨냥해 만든 경량형 IoC와 AOP 컨테이너 프레임 워크이다.
Spring Framework의 모듈
Spring은 7개의 잘 정의된 모듈들로 구성되며 이 중 어플리케이션에 적합한 모듈을 선택하여 적용하고 나머지 모듈들은 무시해도된다.
Spring 모듈은 모두 핵심 컨테이너 위에 구축되어있다.
핵심 컨테이너는 Bean 생성, 설정, 관리하는 방법을 정의하는데 이는 곧 Spring의 근본적인 기능이다. 크기와 부하의 측면에서 경량이다.
7개의 아키텍처
관점 지향 프로그래밍 = AOP(Aspect Oriented Programming)
OOP는 Object-Oriented Programming(객체 지향 프로그래밍)의 약자입니다. 이는 소프트웨어 개발의 한 패러다임으로, 현실 세계의 객체를 소프트웨어로 모델링하는 것을 중심으로 합니다.
객체 지향 프로그래밍의 주요 개념은 다음과 같습니다:
- 클래스(Class):
- 객체의 설계도이자, 사용자 정의 데이터 형식입니다. 클래스는 객체의 속성(멤버 변수)과 동작(메서드)을 정의합니다.
- 객체(Object):
- 클래스의 인스턴스로, 클래스에 정의된 속성과 동작을 가지고 있습니다. 각각의 객체는 고유한 상태를 가지며, 다른 객체와 상호 작용할 수 있습니다.
- 상속(Inheritance):
- 기존 클래스(부모 클래스 또는 슈퍼 클래스)의 속성과 동작을 새로운 클래스(자식 클래스 또는 서브 클래스)에서 재사용할 수 있도록 하는 메커니즘입니다. 이를 통해 코드의 재사용성을 높이고 계층적인 구조를 만들 수 있습니다.
- 다형성(Polymorphism):
- 같은 이름의 메서드나 연산자가 서로 다른 기능을 하는 것을 의미합니다. 다형성은 오버로딩(Overloading)과 오버라이딩(Overriding)을 통해 구현됩니다. 다형성은 코드의 유연성을 높이고 객체 간의 관계를 추상화할 수 있도록 합니다.
- 캡슐화(Encapsulation):
- 객체의 상태(멤버 변수)와 동작(메서드)을 하나로 묶고 외부에서의 접근을 제한하는 것을 의미합니다. 캡슐화는 정보 은닉을 통해 객체의 내부 구현을 숨기고 객체 간의 결합도를 낮춥니다.
객체 지향 프로그래밍은 코드의 재사용성과 유지보수성을 높이며, 복잡한 시스템을 구조화하고 이해하기 쉽게 만들어줍니다. 이러한 이점으로 인해 객체 지향 프로그래밍은 현대 소프트웨어 개발에서 널리 사용되고 있습니다.
Context
- Spring context
projcet의 라이프 사이클을 관리한다. Spring을 컨테이너로 만든 것이 핵심 모듈의 BeanFactory 라면, Spring을 프레임 워크로 만든 것은 컨텍스트 모듈이다. 이 모듈은 국제화된 메시지, 애플리케이션 생명주기 이벤트, 유효성 검증 등을 지원함으로써 BeanFactoty의 개념을 확장한다. 이 모듈은 이메일, JNDI 접근, EJB연계 , 리모팅, 스케쥴링 등과 같은 다수의 엔터프라이즈 서비스를 추가로 제공한다. 또한 템플릿 프레임워크와의 통합도 지원한다.
DAO
- Spring DAO
Spring JDBC DAO 추상 레이어는 다른 데이터베이스 벤더들의 예외 핸들링과 오류 메시지를 관리하는 중요한 예외 계층을 제공한다. 이 예외 계층은 오류 핸들링을 간소화하고, 예외 코드의 양도를 줄여준다. Spring DAO의 JDBC 예외는 일반 DAO 예외 계층에 순응한다.
ORM
- Spring ORM
프레임워크는 여러 ORM 프레임워크에 플러그인 되어, Object Relational툴(JDO,Hibernate, iBtis SQL Map)을 제공한다.
이 모든 것은 Spring의 일반 트랜잭션과 DAO 예외 계층에 순응한다.
Web
- Spring Web module
Web MVC
- Spring MVC framework
MVC 프레임워크는 완전한 기능을 갖춘 MVC 구현이다. MVC 프레임워크는 전략 인터페이스를 통해 설정할 수 있으며, JSP, Velocity, Tiles, iText, POI 같은 다양한 뷰 기술을 허용한다.
**
외워야 하는것!
댓글남기기