[Day 24 | Spring] 라이브러리와 프레임워크

y♡ding·2024년 11월 14일
0

데브코스 TIL

목록 보기
149/163

Framework라이브러리는 모두 소프트웨어 개발을 돕기 위한 코드의 모음이지만, 구조적 차이와 제어 흐름의 주도권에 따라 큰 차이가 있습니다. Java 개발 환경에서도 이 두 개념은 중요한 의미를 가지며, 특히 Spring Framework와 같은 대규모 프레임워크를 이해하는 데 기본이 됩니다.


1. Framework (프레임워크)

프레임워크는 애플리케이션의 기본 구조와 흐름을 제공하는 일종의 틀로, 개발자는 이 틀을 기반으로 코드를 작성하여 애플리케이션을 구축합니다. 프레임워크는 주로 제어의 역전(IoC: Inversion of Control)이라는 개념을 통해 코드의 흐름을 스스로 제어합니다. 개발자가 프레임워크에 맞춰 코드를 작성하고, 프레임워크가 전체 애플리케이션의 흐름을 주도합니다.

Java에서의 프레임워크 예시

  • Spring Framework: Java 애플리케이션 개발을 위한 프레임워크로, IoC와 의존성 주입(DI) 개념을 기반으로 하며, 웹 개발(Spring MVC), 데이터베이스 연동(Spring Data), 보안(Spring Security) 등 다양한 모듈을 제공합니다.
  • Hibernate: 데이터베이스와의 연동을 편리하게 하는 ORM(Object-Relational Mapping) 프레임워크입니다.

특징

  • 제어 흐름을 프레임워크가 담당: 개발자가 작성한 코드를 프레임워크가 호출하는 방식입니다.
  • 애플리케이션 구조를 미리 제공: 프레임워크의 규칙과 구조에 맞춰 코드를 작성해야 하므로 일관성 있고 유지보수하기 쉬운 코드를 작성할 수 있습니다.
  • 재사용성과 확장성: 다양한 모듈과 기능을 제공하여 대규모 애플리케이션에 유리합니다.

예시

Spring Framework에서 컨트롤러를 작성하면, Spring이 해당 컨트롤러를 관리하고 호출하는 방식으로 제어합니다.

@Controller
public class MyController {
    @RequestMapping("/home")
    public String home() {
        return "home"; // home.jsp로 포워딩
    }
}

2. Library (라이브러리)

라이브러리는 특정 기능을 제공하는 코드의 모음으로, 개발자가 직접 라이브러리를 호출하여 사용하는 방식입니다. 라이브러리는 특정 기능을 수행하도록 돕기 위한 코드이기 때문에, 전체 애플리케이션의 흐름을 제어하지 않습니다. 대신, 개발자가 필요에 따라 원하는 라이브러리를 직접 호출하여 애플리케이션을 구성합니다.

Java에서의 라이브러리 예시

  • Apache Commons: 다양한 유틸리티 기능을 제공하는 라이브러리로, 문자열 처리, 파일 입출력, 날짜 계산 등의 기능을 제공합니다.
  • JUnit: Java 애플리케이션의 단위 테스트를 위한 라이브러리입니다.

특징

  • 제어 흐름은 개발자가 담당: 개발자가 필요할 때 직접 라이브러리의 메서드를 호출합니다.
  • 특정 기능에 집중: 라이브러리는 특정 기능이나 유틸리티를 제공하는 데 목적이 있으며, 전체 애플리케이션 구조에는 영향을 주지 않습니다.
  • 다양한 조합 가능: 여러 라이브러리를 조합하여 필요에 따라 사용합니다.

예시

Apache Commons 라이브러리를 사용해 문자열을 처리할 때, 개발자가 직접 메서드를 호출합니다.

import org.apache.commons.lang3.StringUtils;

public class Example {
    public static void main(String[] args) {
        String result = StringUtils.upperCase("hello");
        System.out.println(result); // HELLO 출력
    }
}

Framework와 Library의 차이점 요약

구분FrameworkLibrary
제어 흐름프레임워크가 제어 흐름을 담당하고, 개발자 코드를 호출개발자가 라이브러리를 호출하여 제어 흐름을 담당
구성 방식애플리케이션 구조와 틀을 제공하며, 일관성을 유지특정 기능을 제공하는 코드의 모음
유연성구조에 맞춰 작성해야 하므로 규칙이 많고 제한이 있음다양한 라이브러리를 자유롭게 선택하여 조합 가능
용도전체 애플리케이션을 설계하고 관리하기 위함특정 기능을 구현하기 위한 도움 도구

Spring Framework와의 연결

Java 개발에서 Spring Framework는 전형적인 프레임워크로, IoC 컨테이너를 통해 제어 흐름을 스스로 관리하고, 개발자가 작성한 코드를 필요한 시점에 호출하여 실행합니다. 이로 인해 개발자는 전체 애플리케이션의 흐름에 신경 쓰기보다는 비즈니스 로직에 집중할 수 있습니다.

Spring Framework는 다양한 라이브러리를 내부적으로 활용하여 개발자가 더 쉽게 사용할 수 있도록 제공하며, IoC 컨테이너에 등록된 다양한 Bean(객체)들이 의존성을 관리해 주기 때문에 일관성 있고 확장 가능한 구조로 애플리케이션을 설계할 수 있습니다.


요약

  • Framework는 애플리케이션의 구조와 흐름을 제공하며, 프레임워크가 제어 흐름을 담당합니다.
  • Library는 특정 기능을 제공하며, 개발자가 직접 호출하여 사용합니다.
  • Spring Framework는 Java 애플리케이션의 MVC 패턴, 데이터베이스 연동, 보안 등 다양한 기능을 제공하는 프레임워크로, IoC와 DI를 통해 제어 흐름을 관리하고 개발자가 비즈니스 로직에 집중할 수 있도록 돕습니다.

이 개념을 이해하면 Spring Framework가 Java 웹 애플리케이션의 구조와 역할을 어떻게 관리하는지 더 잘 이해할 수 있을 것입니다.

0개의 댓글

관련 채용 정보