스프링이란?

2025. 8. 30. 11:24·Spring/Core

스프링

스프링 프레임워크는 자바 기반의 대표적인 애플리케이션 프레임워크이다. 주요 특징은 다음과 같다.

  • DI 지원: 의존성 주입을 통해 객체 간 결합도를 낮출 수 있다.
  • AOP 지원: 횡단 관심사를 분리할 수 있다.
  • MVC 웹 프레임워크 제공: 웹 애플리케이션 개발을 위한 MVC 패턴을 제공한다.
  • DB 연동 지원: JDBC, JPA, 선언적 트랜잭션 처리 등을 지원한다.

이외에도 스케줄링, 메시지 연동(JMS), 이메일 발송, 테스트 지원 등 다양한 기능을 제공한다. 스프링은 단독으로 쓰기보다는 여러 프로젝트와 함께 사용하는 경우가 많다.

 

대표적인 스프링 프로젝트는 다음과 같다.

  • 스프링 데이터: 적은 코드로 JPA, MongoDB, Redis 등 데이터 연동을 지원한다.
  • 스프링 시큐리티: 인증과 인가를 담당하는 보안 프레임워크이다.
  • 스프링 배치: 배치 처리 기능을 제공한다.
  • 스프링 인티그레이션, 스프링 하둡, 스프링 소셜 등이 있다.

 

스프링 프로젝트 시작하기

스프링 프로젝트는 Gradle을 사용하여 손쉽게 설정할 수 있다. 이때 Gradle Wrapper를 함께 사용하는 것이 권장된다.

 

Gradle Wrapper란?

Gradle Wrapper는 Gradle을 설치하지 않아도 프로젝트에서 바로 Gradle 명령어를 실행할 수 있게 해주는 도구이다.

  • 미션 리뷰어가 Gradle을 설치하지 않아도 동일한 환경에서 실행할 수 있다.
  • 운영 환경이나 협업 환경에서 빌드 환경 차이를 줄일 수 있다.

 

기본 설정 예시

// 자바 플러그인 적용
plugins {
    id 'java'
}

// 소스와 컴파일 결과를 1.8 버전에 맞춘다
java {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
}

// 소스코드 인코딩으로 utf-8을 사용한다
compileJava.options.encoding = "UTF-8"

// 의존 모듈을 메이븐 중앙 리포지토리에서 다운로드한다
repositories {
    mavenCentral()
}

// spring-context 모듈 의존성을 설정한다
dependencies {
    implementation 'org.springframework:spring-context:5.0.2.RELEASE'
}

tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}

빈(Bean) 객체 등록하기

스프링에서 관리하는 객체를 빈(Bean)이라고 한다.
빈을 등록하는 방법은 @Configuration과 @Bean 애노테이션을 활용하는 것이다.

 

설정 클래스

public class Greeter {

    private String format;

    public String greet(String guest) {
        return String.format(format, guest);
    }

    public void setFormat(String format) {
        this.format = format;
    }
}
@Configuration
public class AppContext {
    @Bean
    public Greeter greeter() {
        Greeter g = new Greeter();
        g.setFormat("%s, 안녕하세요!");
        return g;
    }
}
  • @Configuration은 해당 클래스를 스프링 설정 클래스로 지정한다.
  • @Bean은 해당 메서드가 생성한 객체를 스프링이 관리하는 빈으로 등록한다.

 

실행 코드

아래의 코드를 실행하면 스프링, 안녕하세요!라는 결과가 출력된다.

public class Main {

    public static void main(String[] args) {
        AnnotationConfigApplicationContext ctx =
                new AnnotationConfigApplicationContext(AppContext.class);

        Greeter g = ctx.getBean("greeter", Greeter.class);
        String msg = g.greet("스프링");
        System.out.println(msg);

        ctx.close();
    }
}

 

의존 전파

스프링에서는 모듈 간의 의존 전파가 발생할 수 있다.
예를 들어 A 모듈과 B 모듈이 서로 다른 C 모듈을 의존하는 경우 충돌이 발생할 수 있다.

 

이러한 충돌을 피하기 위해서는 의존성을 명확히 관리하고 버전을 조율하는 것이 중요하다.

'Spring > Core' 카테고리의 다른 글

Spring DI(2)  (0) 2025.09.04
JdbcTemplate 삽입 직후 Key 가져오기  (1) 2025.09.03
Spring DI(1)  (0) 2025.09.02
Spring IoC Container  (2) 2025.09.01
JDBC, JDBC Template 비교  (1) 2025.08.31
'Spring/Core' 카테고리의 다른 글
  • JdbcTemplate 삽입 직후 Key 가져오기
  • Spring DI(1)
  • Spring IoC Container
  • JDBC, JDBC Template 비교
sooyang
sooyang
겉촉속촉을 지향하는 개발자입니다.
  • sooyang
    겉촉속촉 개발 이야기
    sooyang
  • 전체
    오늘
    어제
    • 분류 전체보기 (48)
      • Spring (9)
        • Core (8)
        • JPA (1)
        • MVC (0)
      • 데이터베이스 (9)
        • SQL 첫걸음 (8)
        • Real MySQL (0)
      • 운영체제 (1)
        • 혼자 공부하는 운영체제 (1)
      • 네트워크 (3)
        • AWS CCP (3)
      • 우아한테크코스 (8)
        • level4 (3)
        • level3 (4)
        • level0 (1)
      • 42서울 (7)
        • la piscine (2)
        • inner circle (5)
      • 기타 (3)
        • OOP (6)
        • PS (2)
  • 링크

    • Github
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
sooyang
스프링이란?
상단으로

티스토리툴바