✅ Spring
- 자바 기반 애플리케이션 개발을 쉽게 해주는 프레임워크
- 핵심은 DI(의존성 주입), AOP(관점 지향 프로그래밍) 같은 기능으로 객체 관리와 비즈니스 로직을 깔끔하게 분리할 수 있게 도움
- 모듈형 구조라서, 프로젝트에서 필요한 기능에 따라 의존성을 선택적으로 추가하면 됨
✅ Modules
- Core: 스프링의 기본 동작(빈 관리, DI, 표현식, 컨텍스트)
- Web: 웹 애플리케이션 개발 지원
- AOP: 부가 기능을 분리해주는 도구
- Security:로그인/권한/보안 관리(인증/인가 처리)

https://docs.spring.io/spring-framework/docs/4.0.x/spring-framework-reference/html/overview.html
2. Introduction to Spring Framework
Spring Framework is a Java platform that provides comprehensive infrastructure support for developing Java applications. Spring handles the infrastructure so you can focus on your application. Spring enables you to build applications from "plain old Java o
docs.spring.io
✅ 모듈 의존성 순서도
spring-core
↓
spring-beans
↓
spring-context
↓
spring-expression
↓
spring-aop
↓
spring-web
↓
spring-webmvc
↓
spring-security-core
↓
spring-security-web
↓
spring-security-config
↓
spring-security-taglibs
✅ 주요 Spring Core 모듈
1. spring-core
• 스프링의 가장 기본이 되는 모듈
• IoC(Inversion of Control), DI(Dependency Injection)를 제공
• BeanFactory 같은 핵심 컨테이너 기능이 포함
2. spring-beans
• Bean(객체) 정의, 생성, 주입을 담당
• XML, annotation, Java config 등 다양한 설정 방식 지원
3. spring-context
• spring-core, spring-beans 위에 올라가는 모듈
• ApplicationContext를 제공 → 메시지 리소스 처리, 이벤트 발행, 국제화(i18n) 지원
4. spring-expression(SpEL, Spring Expression Language)
• #{} 같은 표현식으로 객체 그래프를 조회·조작할 수 있게 해주는 언어
• 예: @Value("#{systemProperties['java.home']}")
✅ Spring Web 관련 모듈
1. spring-web
• Servlet API 위에서 동작
• 멀티파트 파일 업로드, 웹 관련 유틸, REST 지원 등
2. spring-webmvc
• 흔히 말하는 Spring MVC
• DispatcherServlet 기반으로 Model-View-Controller 패턴 지원
• REST API, 뷰 렌더링, 핸들러 매핑/어댑터, 컨트롤러 관리 등
✅ Spring AOP
• AOP(Aspect-Oriented Programming) 지원 모듈
• 로깅, 트랜잭션, 보안 같은 **횡단 관심사(Cross-cutting concerns)**를 분리
• 예: 모든 서비스 메서드 실행 전에 로깅 실행
✅ Spring Security 관련 모듈
1. spring-security-core
• 인증(Authentication), 인가(Authorization)의 핵심 로직
• 사용자 계정, 권한(Role) 관리
2. spring-security-web
• 보안을 웹 레벨(필터 기반)에서 적용
• 로그인/로그아웃, 세션 관리, CSRF 보호, URL 기반 접근 제어
3. spring-security-config
• XML, Java Config로 보안 설정을 쉽게 할 수 있게 해주는 모듈
• 예: @EnableWebSecurity
4. spring-security-taglibs
• JSP 같은 뷰에서 보안 태그 사용 가능.
• 예: <sec:authorize access="hasRole('ADMIN')">
Spring Boot일 경우‼️
대부분의 모듈을 직접 추가하지 않고, starter 의존성으로 해결
Ex)
spring-boot-starter-web
→ spring-web, spring-webmvc, spring-core 등 자동 포함
spring-boot-starter-security
→ spring-security-* 모듈 자동 포함
즉, Boot 사용 시에는 목적별 스타터만 추가하면 끝이고,
Legacy Spring 사용 시에는 개별 모듈을 직접 추가해야 함(pom.xml)
1. 소프트웨어에서 “레거시”의 일반 개념
• 레거시 시스템/프로젝트 = 오래된 기술, 아키텍처, 코드 스타일을 기반으로 돌아가는 시스템
• 당장은 동작하지만 유지보수나 확장이 어렵고, 최신 기술 스택과는 괴리가 있는 경우가 많음
2. 스프링 맥락에서 “레거시 프로젝트”
• 스프링에서 말하는 레거시 프로젝트는 보통 Spring Boot를 쓰지 않고, 직접 XML 또는 JavaConfig로 설정한 프로젝트 뜻함
• Maven/Gradle에서 필요한 모듈을 하나씩 직접 추가해야 함(spring-core, spring-beans, spring-webmvc 등)
• 환경 설정(XML, JavaConfig)을 직접 관리
-applicationContext.xml
-web.xml + dispatcher-servlet.xml
• 서버도 내장 Tomcat이 아니라, WAR 파일 빌드 후 외부 WAS(WebSphere, Tomcat 등)에 배포
• 프로젝트 구조가 복잡하고 설정 코드 양이 많음
'Spring' 카테고리의 다른 글
[Spring] web.xml (0) | 2025.08.20 |
---|---|
[Spring] 스프링 빈 중복 에러(UnsatisfiedDependencyException, NoUniqueBeanDefinitionException) (0) | 2024.08.20 |
[Spring] log4jdbc 라이브러리로 sql 로그 파라미터 값까지 출력하기 (0) | 2023.08.08 |
[Spring] 로깅 프레임워크 개념 및 종류(+log4j2 설정) (0) | 2023.07.28 |