[제어 흐름 관점에서의 차이]
- 라이브러리는 내가 부른다.
- 프레임 워크: 내가 불린다.
라이브러리
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A");
Collections.sort(list); // 내가 라이브러리 호출
}
- 필요할때 라이브러리의 메서드를 직접 호출한다.
- 라이브러리는 도구 역할
프레임워크
- 개발자는 프레임 워크가 정한 규칙에 따라 코드 작성
- 프레임워크가 적절한 시점에 내 코드 호출
@Controller
public class UserController {
@GetMapping("/users")
public String users() {
return "users";
}
}
- 내가 직접 호출한 적은 없음.
- HTTP 요청이 오면 Spring이 이 메서드를 호출.
프레임워크 → 내 코드 → 프레임워크
이것이 IoC(제어의 역전)
[사용 방식의 차이]
라이브러리 사용방식
- 필요한 기능만 가져다 쓴다.
- 구조 . 설계는 개발자 책임
- 자유도는 높지만, 일관성.표준은 약함
File file = new File("test.txt");
Files.readAllLines(file.toPath());
- 언제
- 어디서
- 어떻게
- 전부 개발자가 결정.
프레임워크 사용방식
- IoC 컨테이너가 객체 생명주기 관리
- 애플리케이션 실행 흐름을 Spring이 주도
- 개발자는 "비즈니스 로직"에 집중
- DI
- AOP
- 트랜잭션 관리
- MVC요청 흐름 제어
@Service
public class OrderService {
private final PaymentService paymentService;
// 객체 생성 ❌
// new PaymentService() ❌
public OrderService(PaymentService paymentService) {
this.paymentService = paymentService; // Spring이 주입
}
}
- Spring이 객체생성 + 연결 + 호출 시점 결정
[일반 Java 라이브러리]
- JDK,Apache Commons등..
- 흐름 제어 전부 개발자 몫
- 특정 기능만 제공
- 프레이워크에 포함되어 쓰이기도 한다.
- 라이브러리는 절대 내 코드를 호출하지 않는다.
[핵심 차이 요약]
- 라이브러리는 내가 필요할때 사용하는 도구이고,
- 프레임워크는 나를 불러서 일을 시키는 틀이다.
| 제어 흐름의 주체 | 프레임워크 | 개발자 |
| 제어 흐름 특징 | IoC (제어의 역전) | 순방향 제어 |
| 사용 방식 | 정해진 구조 안에 코드를 “끼워 넣음” | 필요할 때 내가 호출 |
| 확장 방식 | 상속, 인터페이스 구현, 어노테이션 | 메서드 호출 |
| 애플리케이션 주도권 | 프레임워크가 실행을 주도 | 개발자가 실행을 주도 |
'위클리페이퍼' 카테고리의 다른 글
| GitHub Actions Trigger 유형과 CI/CD 활용 시나리오 (0) | 2026.05.15 |
|---|---|
| AWS RDS를 활용하는 이점과 EC2에 직접 DB 설치 비교 (0) | 2026.05.12 |
| Spring MVC에서 클라이언트의 요청 처리 흐름.(@Controller/@RestController) (0) | 2026.02.23 |
| Spring boot에서 사용되는 다양한 Bean 등록 방법들 (0) | 2026.02.06 |
| 웹 서버와 WAS(Web Application Server)의 차이 (0) | 2026.02.02 |