1. Framework

  • Frame의 대표적인 의미는 ‘뼈대, ‘틀’, ‘구조’ 이다
  • 일상 생활에서 그림이나 액자. 자동차의 뼈대 등을 프레임이라고 부른다
  • Frame은 어던 대상의 큰 틀이나 외형적인 구조를 의미한다
  • 프로그래밍 분야에서의  Frame도 비슷한 의미를 가지고 있다

 2. 프로그램 종류별 Frame

 1) Web의 초기에는 HTML 문서를 구성하는 태그 중에서 frame이라는 태그가 존재했다

  • 아래 예를 보면 frameset과 frame 태그를 이용해서 HTML 문서의 틀만 구성하고 있는 것을 볼 수 있다
<frameset cols="33%,*,33%">
    <frame name="left" src="/left_menu"/>
    <frame name="center" src="/context"/>
    <frame name="right" src="/right_menu"/>
</frameset>

 2) Java에서 Frame과 유사한 의미를 가지는 Framework 가 있다

  • Java에서는 Collection Framework 가 있다
  • Java에서 자주 사용하는 Map이나 Set, List 등의 Collection들은 데이터를 저장하기 위해 널리 알려져 있는 자료구조를 바탕으로 비슷한 유형의 데이터들을 가공 및 처리하기 쉽도록 표준화 된 방법을 제공하는 클래스의 집합이다
  • Java 클래스 유형 중에서 기본적인 뼈대로만 구성되어 있는 것은 추상 메서드만 정의되어 있는 Interface 이다
  • Collection은 Map, Set, List 같은 인터페이스와 그 인터페이스들을 구현한 구현체들의 집합이다

3. 프로그램에서의 Framework 역활

  • 기본적으로 프로그래밍을 하기 위한 틀이나 구조를 제공하므로 생산성이 향상된다
  • 정해진 규약에 따라 작성하므로 애플리케이션을 체계적으로 관리가 가능하다
  • 코드의 재사용성이 높고, 확장성이 좋다
  • 서로 다른 애플리케이션 간의 통신, 데이터 저장소에 데이터를 저장 등... 다양한 기능들을 라이브러리 형태로 제공한다
  • 개발자에게 애플리케이션의 핵심 로직의 개발에 집중할 수 있도록 편의를 제공한다

4. Framework 와 Library

  • Framework 와 Library는 애플리케이션 구현을 위해 필요한 여러가지 기능들을 제공하는 의미에서는 유사하다
  • 애플리케이션에 대한 제어권에 따라 구분할 수 있다

Spring Frame 예) 

@SpringHelloApplication
@RestController
@RequestMapping(path = "/v1/message")
public class SampleApplication {
    @GetMapping
    public String getMessage() {  // (2)
        String message = "hello world";
        return StringUtils.upperCase(message);       
    }

    public static void main(String[] args) {
        SpringApplication.run(SampleApplication.class, args);
    }
}
  • Library
    - StringUtils 클래스는 Apache Commons Lang3 라이브러리의 유틸리티 클래스 중 하나이다
    - StringUtils 클래스의 upperCase() 메서드는 파라미터로 전달된 문자열(message 변수)을 대문자로 변환한다
    - 개발자가 작성한 코드 안에서 필요한 기능을 해당 라이브러리를 호출해서 사용하는 것이 Library 이다
    - 필요한 부분에 개발자가 직접 해당하는 라이브러리를 사용한다
    - Library는 애플리케이션의 주도권이 개발자에게 있다
  • Framework
    - 위의 예) 에서 사용한 애너테이션이나 main() 메서드 내의 SpringApplication.run() 메서드는 Spring Framework에서 지원하는 기능들이며, 라이브러리와는 다르게 코드 상에는 보이지 않는 상당히 많은 일을 한다
    - getMessage() 메서드 내부의 코드처럼 개발자가 메서드 내에 코드를 작성해 두면, Spring Framework에서 개발자가 작성한 코드를 사용해서 애플리케이션의 흐름을 만들어낸다
    - Framework 자체 규약이 있으며, 규약에 맞춰 코드를 작성해야 한다
    -  Framework는 애플리케이션의 주도권이 개발자에게 있다

 

5. Spring Boot

 1) Spring Boot 사용 목적

  • XML 기반의 복잡한 설계 방식을 지양한다
    - 기존에 사용하던 Spring의 복잡한 설정에서 탈피할 수 있다
  • 의존 라이브러리를 자동으로 관리한다
    - Spring Boot의 starter 모듈 자동구성 기능으로 라이브러리의 수동 설정의 불편함을 제거하였다
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation 'com.h2database:h2'
}

 

라이브러리 자동 설정

  • 애플리케이션 설정을 자동으로 구성한다
     - Spring Boot은 스타터(Starter) 모듈을 통해 설치되는 의존 라이브러리를 기반으로 애플리케이션의 설정을 자동으로 구성한다
implementation 'org.springframework.boot:spring-boot-starter-web'

       - 위와 같은 starter를 작성하면 Spring Boot은 애플리케이션이 웹 애플리케이션이라고 인식하고 웹 애플리케이션을 띄울 서블릿 컨테이너(디폴트: Tomcat) 설정을 자동으로 구성한다

implementation 'org.springframework.boot:spring-boot-starter-jdbc’

       - 위와 같은 starter를 작성하면 Spring Boot은 애플리케이션에 데이터베이스 연결이 필요하다고 인식하고 JDBC 설정을 자동으로 구성한다
       - Spring Boot에서 지원하는 자동 구성으로 인해 애플리케이션에 대한 설정을 직접해야하는 번거로움을 최소화할 수 있다
       - 자동 구성을 활성화 하기 위해서 아래와 같은 애너테이션을 코드에 추가해면 된다

@SpringBootApplication  // Spring Boot에서 자동 구성 설정을 활성화해 준다
public class SampleApplication {
    public static void main(String[] args) {
        SpringApplication.run(SampleApplication.class, args);
    }
}
  • 프로덕션급 애플리케이션의 빌드를 쉽게 할 수 있다
    - Spring Boot을 사용하면 개발한 애플리케이션 구현 코드를 손쉽게 빌드할 수 있다
    - build > bootJar(더블 클릭) 하면 libs > 파일명.jar 와 같이 애플리케이션 실행 파일이 생성된다
    - 직접 빌드 결과물을 War 파일 형태로 WAS(Web Application Server)에 올릴 필요가 없다

※ WAS(Web Application Server)

 - Java 기반의 웹 애플리케이션을 배포하는 일반적인 방식은 개발자가 구현한 애플리케이션 코드를 WAR(Web application ARchive) 파일 형태로 빌드한 후에 WAS(Java에서는 서블릿 컨테이너라고도 한다)라는 서버에 배포해서 해당 애플리케이션을 실행하는 것이다

 - Java에서 사용되는 대표적인 WAS에는 Tomcat이 있다

 - WAS는 구현된 코드를 빌드해서 나온 결과물을 실제 웹 애플리케이션으로 실행되게 해주는 서버이다

 

  • 내장된 WAS를 통해 배포를 쉽게 할 수 있다
     - Spring Boot은 Apache Tomcat이라는 WAS를 내장하고 있기때문에 별도의 WAS를 구축할 필요가 없다
     - Spring Boot을 통해 빌드된 jar 파일을 이용해서 아래와 같은 명령어를 cmd에서 입력 해주면 서비스 가능한 웹 애플리케이션을 실행 할 수 있다
java -jar sample-app.jar

 

 

 

 

※ 참조 링크

▶ 자바 서블릿 :https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_%EC%84%9C%EB%B8%94%EB%A6%BF

 

자바 서블릿 - 위키백과, 우리 모두의 백과사전

서블릿은 여기로 연결됩니다. 다른 뜻에 대해서는 서블렛 문서를 참고하십시오. 자바 서블릿(Java Servlet)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하

ko.wikipedia.org

서블릿 컨테이너 : https://ko.wikipedia.org/wiki/%EC%9B%B9_%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88

 

웹 컨테이너 - 위키백과, 우리 모두의 백과사전

웹 컨테이너(web container, 또는 서블릿 컨테이너)는 웹 서버의 컴포넌트 중 하나로 자바 서블릿과 상호작용한다. 웹 컨테이너는 서블릿의 생명주기를 관리하고, URL과 특정 서블릿을 맵핑하며 URL

ko.wikipedia.org

아파치 톰캣 : https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%ED%86%B0%EC%BA%A3

 

아파치 톰캣 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

https://tomcat.apache.org/

 

Apache Tomcat® - Welcome!

The Apache Tomcat® software is an open source implementation of the Jakarta Servlet, Jakarta Server Pages, Jakarta Expression Language, Jakarta WebSocket, Jakarta Annotations and Jakarta Authentication specifications. These specifications are part of the

tomcat.apache.org

 

'Spring Framework' 카테고리의 다른 글

Spring Framework - AOP  (0) 2022.06.22
Spring Framework - DI - Spring Container  (0) 2022.06.19
Spring Framework - IoC / DI - 기초  (0) 2022.06.17
Spring Framework 특징  (0) 2022.06.15
Spring Framework - 환경 구성  (0) 2022.06.14

+ Recent posts