Notice
Recent Posts
Recent Comments
Link
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Archives
Today
Total
관리 메뉴

memo6759 님의 블로그

2025-11-17(Spring) 본문

HDC 학습일지

2025-11-17(Spring)

heewon09 2025. 11. 17. 21:20

1. 프레임워크란?

프레임워크(Framework)는 완성된 프로그램이 아니라,
특정 문제를 해결하기 위해 필요한 공통 기능을 미리 만들어 놓은 미완성 모듈이다.

모든 개발자가 반복해서 만드는 기능들을 미리 만들어 제공한다.

프레임워크가 제공하는 공통 기능들

  • DB 연동
  • 트랜잭션 처리
  • 커넥션풀 관리
  • 로그 처리
  • 보안 처리
  • 다국어(i18n) 지원
  • 메시징 처리

개발자는 “시스템 고유 기능”만 개발하면 되고,
나머지 인프라 기능은 프레임워크가 자동으로 처리해 준다.

프레임워크의 특징

  • 내부 흐름에 따라 개발자가 작성한 코드를 자동으로 실행
    → 이것을 제어의 역전(IoC: Inversion of Control) 이라고 한다.
  • 신뢰성 높은 코드를 빠르게 개발 가능
  • 개발자 간의 협업·의사소통이 쉬워짐
  • 유지보수 시간이 크게 감소함

 2. 스프링의 핵심 기능

스프링(SPRING)은 자바 기반의 대표적인 프레임워크이며
다음과 같은 주요 기능을 제공한다.

스프링의 5대 핵심 기능

  1. IoC / DI 컨테이너
  2. AOP (관점 지향 프로그래밍)
  3. 스프링 MVC (웹 프레임워크)
  4. 스프링 JDBC (DB 접근)
  5. 트랜잭션 · 커넥션풀 · 스케줄러 등 인프라 기능

스프링은 특히 OOP 설계를 잘 살릴 수 있도록 돕는 프레임워크이다.


 3. 스프링의 특징

 자바 기반 프레임워크

순수 자바로 작성되어 있고, 자바 객체를 중심으로 개발한다.

OOP 설계를 잘 지원

인터페이스 기반 개발, 느슨한 결합, 유연한 구조를 만들기 쉽게 해준다.

 다양한 패턴 내장

싱글톤 패턴, 팩토리 패턴, 프록시 패턴, MVC 패턴 등

 IoC 컨테이너 내장

스프링이 모든 객체 생성 → 초기화 → 소멸까지 관리한다.

➡ 이 객체를 스프링에서는 Bean(빈) 이라고 부른다.

➡ 개발자가 new 를 직접 하지 않고 컨테이너에서 받아서 사용해야
스프링이 제공하는 기능(IoC, AOP, DI 등)을 활용할 수 있다.


4. IoC(Inversion of Control) 컨테이너란?

IoC 컨테이너 = 객체의 라이프사이클을 관리하는 관리자

과거에는 개발자가 직접 객체를 new 로 생성·연결·소멸시켰다.
스프링에서는 이 모든 작업을 IoC 컨테이너(ApplicationContext) 가 대신한다.

스프링에서 가장 많이 사용하는 컨테이너:

 
BeanFactory (기본) ↓ ApplicationContext (가장 많이 사용) ↓ WebApplicationContext (웹 앱 전용)

ApplicationContext는
설정 파일(XML 또는 @Configuration)을 분석해 모든 Bean을 생성하고 DI까지 처리한 후 초기화 한다.


5. DL & DI

1) DL(Dependency Lookup) – 의존성 조회

스프링 컨테이너에 등록된 객체를 직접 “찾아오는” 방식

 
MyBean bean = context.getBean("mybean");

➡ getBean() 사용


2) DI(Dependency Injection) – 의존성 주입

스프링이 객체를 생성하고,
객체가 필요로 하는 의존 객체를 자동으로 넣어주는 방식

즉,

 
과거 → 내가 new 해서 연결 지금 → 스프링이 new 하고 연결해서 준다

DI가 자동으로 이루어지려면:

  1. 스프링 설정파일에서 의존성 관계 등록
  2. 객체가 의존성을 받을 준비가 돼 있어야 함
    • 생성자 주입(Constructor Injection)
    • setter 주입(Setter Injection)

 DI 방식 (중요)

1) 생성자 주입 (Constructor Injection)

가장 많이 쓰고 가장 안정적인 방식.

public class Player { private Dice dice; public Player(Dice dice) { this.dice = dice; } }
Spring XML:


<constructor-arg ref="dice"/>

 


 2) Setter 주입 (Property Injection)

setter 메서드를 만들어 DI하는 방식.

public void setDice(Dice dice) { this.dice = dice; }
XML:


<property name="dice" ref="dice"/>

 


 마무리

프레임워크와 스프링의 핵심은 단 하나로 요약된다.

“내가 객체를 만드는 것이 아니라, 프레임워크가 생성하고 관리한다.”

프레임워크가 공통 기능을 제공하고
스프링이 객체를 생성 → 연결 → 관리까지 모두 해주므로
개발자는 “비즈니스 로직”에만 집중하면 된다.

'HDC 학습일지' 카테고리의 다른 글

2025-11-20(JPA)  (0) 2025.11.20
2025-11-18(Spring)  (0) 2025.11.19
2025-11-14(서블릿, jsp 구조 파악, 스프링)  (0) 2025.11.17
2025-11-13(백엔드 - Servlet)  (0) 2025.11.13
2025-11-12(React -final)  (1) 2025.11.13