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