*Spring Framework
- 다양한 기능을 제공하는 Open Source Framework.( 무료 )
- Rod Johnson 최초 제안.
- Spring IoC ( Inversion of Control )에서 Spring Framework으로 변환.
- 기능 : DI, AOP, ORM, JDBC, MVC,,, 다양한 기능을 제공.
- spring.io에서 개발툴 ( STS )및 Framework 제공.
- 경량 Framework( 빠르다 – 애플리케이션이 실행될 때 필요한 객체만 로드되고
필요없는 객체는 추후 지연로딩( lazy loading) 되기 때문에 메모리를절약할 수 있다. )
- 스프링을 서비스하기위해 별도의 서버가 필요 없다.
- 분산처리를 지원하지 않는다. ( web 으로 해결 )
모든 설정을 개발자가 수행.
대부분의 설정을 Spring boot에서 대신 수행.
개발자는 설정보다 개발에 집중.
- 스프링 기반에 애플리케이션을 빠르고, 손쉽게 개발할 수 있도록 도와주는 도구.
장점 :
-간편한 설정 ( Spring Legacy에 비해 복잡한 설정이 줄고, 개발자는 업무로직 구현에 집중 )
-높은 생산성. (빠르고 쉽게 개발하고, 실행할 수 있게 해준다.)
-내장된 기능. ( 내장 서버, 보안기능 등 다양한 기능이 내장되어있다.)
-자동화된 설정 ( 설정이 자동으로 처리되어 개발 초기에 시간을 줄여준다. )
단점:
-복잡성 :강력한 기능을 제공하나, 너무 많은 기능이 포함되어 복잡
( 옵션과 설정이 많아 초보자가 이해하고 관리하기 어렵다.)
- 추가적인 리소스의 사용 ( 내장서버와 다양한 라이브러리가 포함되어 크기가 상대적으로 크다.)
- 프로그램의 시작시간이 길어질 수 있다.
( 소규모 프로젝트는 크게 영향을 주지 않으나, 대규모 프로젝트나 서버리스 환경에서는
도입을 고려해야하는 상황이 발생할 수 있다. )
- 지원되지 않는 기능 : 특정 DBMS연동 x, 특정프로토콜 지원x => customizing하면 된다.
- 유연성부족 : 개발자가 원하는 설정을 직접 추가하거나 수정하기 어렵다.
*Spring MVC 구조/ 동작

*DispatherServlet : 모든 요청을 받아서 (진입점) HandlerMapper에게 요청을 보내고, 요청을 처리할 수 있는
Contoller명과 method을 얻는 일
*HandlerMapper : 요청 받은 URL을 ( /a , /요청명 )처리할 수 있는 Controller을 검색하는 일.
*Controller : web 요청을 처리하는 일. ( web 요청은 method단위로 처리 )
-web parameter처리, 관계유지, scope객체에 값 설정, 이동방식설정
*ViewResolver : Controller에서 반환되는 JSP명을 받아서 prefix와 suffix를 붙여 JSP가 존재하는 지 추적하는 일
InteralResourceViewResolver :JSP추적, ThymeleafViewResolver : html추적
*디렉토리 구성

*배포 시에 Servlet/JSP를 실행할려면 : ( 개발은 되나 배포후 실행이 안됨 )
ServletInitializer.java 가 SpringMvcApplication.java와 병합.

*내장탐켓사용 ( tomcat-embed-jasper )
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
*JSTL : boot 3.0이상
-Tomcat10.x – 포함 동작
( jakarta 패키지 사용)
-jakarta.servlet-api
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
-jakarta.servlet.jsp.jstl-api
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>3.0.0</version>
</dependency>
-jakarta.servlet.jsp.jstl
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>3.0.1</version>
</dependency>
*개발설정
application.properties
- 개발, 운영, 테스트를 다양한 환경으로 분리하여 테스트 가능

*실행 과 배포시 사용할 properties 설정
spring.profiles.active=dev
spring.profiles.active=prod
*InteralResourceViewResolver객체에서 JSP를 찾기 위해 Controller의 method가 반환하는
JSP명 앞(prefix) 과 뒤(suffix)에 붙이게 되는 이름을 설정.
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
/WEB-INF/views/test.jsp
'Spring' 카테고리의 다른 글
| [Spring] ExceptionHandler, 파일 업로드 (0) | 2025.09.08 |
|---|---|
| [Spring] SessionAttributes, cookie 얻기 (2) | 2025.09.08 |
| [Spring] Controller, web parameter, RequestParam, HttpServletRequest (2) | 2025.09.08 |