Spring Framework는 Java 기반의 애플리케이션 개발을 위한 경량 프레임워크입니다.
객체 지향 프로그래밍(OOP)과 디자인 패턴을 활용하여 유연하고 확장성 있는 애플리케이션을 개발할 수 있도록 지원합니다.
Spring의 핵심 특징:
Spring은 여러 모듈로 구성되어 있으며, 각 모듈은 독립적으로 사용 가능하지만 함께 조합할 수도 있습니다.
| 모듈 | 설명 |
|---|---|
| Spring Core | DI(의존성 주입)과 Bean 관리의 핵심 |
| Spring AOP | 횡단 관심사(로깅, 보안) 처리 지원 |
| Spring MVC | 웹 애플리케이션 개발을 위한 MVC 패턴 제공 |
| Spring Data | JPA, JDBC 등 데이터 접근 계층 지원 |
| Spring Security | 인증 및 인가 기능 제공 |
| Spring Boot | 설정 자동화 및 간편한 애플리케이션 개발 지원 |
| Spring Cloud | MSA(Microservices) 환경에서 유용한 도구 제공 |
| Spring Batch | 대량 데이터 처리와 배치 작업 지원 |
@Component, @Service, @Repository, @Controller 애노테이션으로 자동 관리 가능 예) Spring 컨테이너를 이용한 객체 관리
@Component
public class UserService {
public void sayHello() {
System.out.println("Hello, Spring!");
}
}
public class Main {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
UserService userService = context.getBean(UserService.class);
userService.sayHello();
}
}
예) 생성자 주입
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
예) 로깅 AOP 적용
@Aspect
@Component
public class LoggingAspect {
@Before("execution(* com.example.service.*.*(..))")
public void logBeforeMethod(JoinPoint joinPoint) {
System.out.println("Method 실행: " + joinPoint.getSignature().getName());
}
}
Spring을 활용하면 웹 애플리케이션을 쉽게 개발할 수 있습니다.
Spring MVC의 주요 구성 요소:
@Controller → 요청을 받아 처리하는 역할 @Service → 비즈니스 로직을 담당 @Repository → 데이터베이스와의 연결 예제: Spring MVC 컨트롤러
@RestController
@RequestMapping("/users")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
User user = userService.getUserById(id);
return ResponseEntity.ok(user);
}
}
Spring Boot는 Spring Framework의 설정을 간소화하여 빠른 개발 환경을 제공합니다.
| 비교 항목 | Spring Framework | Spring Boot |
|---|---|---|
| 설정 | XML, Java 설정 필요 | 자동 설정 (AutoConfiguration) |
| 서버 실행 | 별도 Tomcat 설정 필요 | 내장 서버 제공 |
| 의존성 관리 | 수동 설정 | starter로 간편한 설정 |
| 개발 속도 | 상대적으로 느림 | 빠른 개발 가능 |
Spring은 다양한 기술과 쉽게 통합하여 사용할 수 있습니다.
Spring Framework는 Java 개발을 더욱 효율적으로 할 수 있도록 도와주는 필수 프레임워크입니다.
DI와 AOP 같은 개념을 활용하면 유지보수가 쉬운 구조를 만들 수 있다는 점을 다시 한 번 깨달았습니다.
Spring Boot를 사용하면 설정이 훨씬 간편해지지만 Spring의 기본 원리를 이해하는 것이 중요하다는 점도 느꼈습니다.
앞으로 프로젝트에서 Spring의 다양한 기능을 적극적으로 활용해 보고 싶습니다!