Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- pls-00103
- 어노테이션
- vue
- oracle
- HTTP
- error
- JavaScript
- Java
- GIT
- autowired
- vue3
- DTO
- API
- spring boot
- https
- JSON
- bean
- Github
- CS
- framework
- Spring
- 개발자기록
- react
- 뷰
- REST API
- SQL
- 프레임워크
- Entity
- 깃허브에러
- Spring Framework
Archives
- Today
- Total
o-ohi-code 님의 블로그
[Framework] Spring Framework 란? 본문
Spring Framework
자바(Java) 기반 웹 애플리케이션을 만들기 위한 강력하고 유연한 오픈소스 프레임워크이다.
✔ 복잡한 자바 웹 개발을 쉽게 만들어주는 개발용 틀(Framework)
✔ 로그인, DB 연결, 트랜잭션 처리, 보안 같은 복잡한 기능들을 자동으로 해주는 도구 모음
Spring Framework의 핵심 특징
- DI : Dependency Injection (의존성 주입) : 객체를 직접 만들지 않고 스프링이 대신 주입해줌
- loc (제어의 역전) : 객체의 생성과 흐름을 개발자가 X 스프링이 주도한다.
- AOP (관점 지향 프로그래밍) : 로깅, 보안 트랜잭션 등 공통 기능을 분리 코드가 깔끔해짐.
- Spring MVC : 웹 요청을 컨트롤러 - 서비스 - DAO 구조로 깔끔하게 처리.
- 보안, 트랜잭션, 테스트 지원 : 로그인, DB 롤백 등 복잡한 것도 쉽게 처리 가능해진다.
🤔 왜 Spring Framework 를 사용하는 걸까?
원래 자바 웹 개발은.. 객체 생성/연결을 직접 관리해야 했다. 또한 DB 연결, 트랜잭션 처리도 직접 하고, 로그인, 세션 등 모든게 수작업을 요구 했다.
하지만. Spring 은 이런걸 자동으로 해주고, 설계도를 제공해서 개발을 빠르고 안정적으로 할 수 있게 해준다.
Spring
├─ Spring Framework : DI, IoC, AOP, MVC 등
├─ Spring Boot : 빠르게 시작할 수 있게 도와주는 도구
├─ Spring Security : 보안, 로그인, 권한 관리
├─ Spring Data JPA : DB 연결
├─ Spring Batch : 대용량 배치 처리
├─ Spring Cloud : 마이크로서비스용 클라우드 연동
└─ ... 기타 수십 개의 모듈
Spring Framework 구조 (MVC + DI)
요청 → DispatcherServlet
↓
HandlerMapping
↓
Controller ← @Controller
↓
Service ← @Service
↓
Repository ← @Repository
↓
DB
1. 요청 (Request) : 사용자가 브라우저(또는 클라이언트, 앱)에서 어떤 주소로 요청을 보냄
ex) get /members. post/login
2. DispatcherServlet : 스프링의 중앙 관제탑
- 모든 요청이 이곳을 거친고,
- 서블릿(Servlet) 기반으로, 스프링 웹의 진입점이다.
- 어떤 컨트롤러에 이 요청을 넘겨줄지 결정한다.
✔ 다만 DispatcherServlet 은 web.xml 에 등록하는 옛날 방식이다.
✔ 만약 Spring boot 툴을 사용하고 있다면? Spring Framework 내부에 자동으로 작동한다.
3. HandlerMapping : 요청 URL 과 컨트롤러 매핑 정보 찾기
- URL 요청에 맞는 컨트롤러가 무엇인지 확인
- @RequestMapping("/login") 같은 설정을 찾아준다.
4. Controller (@Controller, @RestController)
- 사용자의 요청을 처리하고, 필요한 데이터를 받아오거나 응답 생성
- 요청 받기 (로그인 요청)
- 서비스 호출 (비즈니스 로직 수행)
- 응답 반환 View(jsp), JSON 응답
5. Service (@Service)
비즈니스 로직을 수행하는 계층 (실제 계산, 처리, 조건 분기 등)
✔ 실무에서 가장 많은 로직이 모이는 곳
6. Repository (@Repository)
DB와 직접 연결되는 계층 (DAO 역할)
7. DB
실제 데이터를 저장하는 데이터베이스 (MySQL, Oracle..)
이때문에 우리는 Spring Framework + Spring Boot 를 함께 사용한다.
Spring Framework 만 쓸 때는
- web.xml, dispatcher-servlet.xml 필요
- WAS(톰캣 등..) 설치
- Bean 수동 등록
- applicationContext.xml 필요
- 프로젝트 구조 자유
Spring Boot 를 사용한다면?
- web.xml X : (자동) 필요 없음
- 내장 톰캣 (자동)
- @ComponentScan (자동)
- application.yml 하나로 설정
- 기본 구조 권장 제공 (src/main/java 등)
'프레임워크(Framework) > Spring' 카테고리의 다른 글
서버에서 클라이언트로 데이터 전송 방법 (0) | 2025.04.08 |
---|---|
클라이언트에서 서버 데이터 전송 방법 (1) | 2025.04.07 |
[Oracle] java.sql.SQLSyntaxErrorException: ORA-00904 해결 (0) | 2025.04.07 |
[Spring] DI/ IoC 란? (0) | 2025.04.04 |