Spring Framework 소개
- https://tomcat.apache.org/ Open Source
- 버전 10 이후 - Java EE Platform의 개선 버전인 Eclipse 재단의 Jakarta EE Platform 규격의 구현체
- 이전 버전 - Java EE Platform의 일부분으로 구현됨
Jsp & Servlet
- Request를 보내는 주소가 서비스나 데이터가 아닌 물리적인 파일 위치나 파일 이름이 된다.
- 데이터 베이스에 접속하는 코드가 각 파일에 반복된다. -> 개발자의 역량에 따라 구조 및 효율이 매우 달리질 수 있다. -> 유지 보수 및 업데이트가 매우 어려운 구조. -> 반복되는 코드가 여러 파일에 분산될 수 있다.
model 2
- MVC 가 구분되어 구현되고 유연한 구조가 되었지만 이러한 구조를 개발자가 직접 잡아야 함.
- 새 프로젝트를 만들 때 마다의 반복적인 코딩 작업이 많음
- Dispatcher Servlet으로 요청을 받고 해당 Servlet에서 Controller로의 매핑을 하여준다.
Spring Framework
- Spring이 Dispatcher Servlet은 자동으로 짜준다. 우리는 Controller만 작성하면 된다.
- DB도 웬만하면 자동으로 짜주기 때문에 보다 편하게 사용할 수 있는게 Spring Framework이다.
Spring Boot
- 자주 사용되는 라이브러리 관리
- 연관된 라이브러리들의 버전 통일화
- 자주 사용되는 라이브러리 자동 포함
- 자주 사용하는 설정 자동화
- Controller package, dbcp 등
- 내장 서버와 함께 배포
- 실행가능한 jar 로 배포: 서버와 함께 배포
의존성 주입(Dependency Injection)
제 3의 누군가가 객체를 만들어주는 것
- Spring Framework의 주요 특성, 최근 소프트웨어 개발의 트랜드 중 하나
- 의존성 주입을 위해서는 특수한 환경이 필요하며 ..
- 특정 객체는 특별한 관리가 필요하다고 표기한다. (Bean)
- Annotation, xml, Java 설정 클래스 등에 정의해 놓은 항목들을 찾는다.
- 환경이 관리하는 메모리 공간(Spring Container)에 객체들을 저장한다.
- 관리하는 객체를 필요하다고 하는 경우 만들어둔 객체를 제공한다.
- 특정 객체는 특별한 관리가 필요하다고 표기한다. (Bean)
Controller 가 특수하게 관리를 한다.
- 스프링 앱이 실행되면서 객체들을 관리할 Container가 만들어진다.
- ApplicationContext : 앱 전체에 대한 Container
- 웹환경이 아닌 독립적인 Bean 들이 담긴다. (Service, Database 등)
- WebApplicationContext : 웹 및 Servlet 에 대한 Container
- Web Controller 등에 대한 Bean 들이 담긴다.
- 그 외 SecurityContext 등 다양한 Context를 가질 수 있다.
프로젝트 살펴보기
-HelloApplication.java
package com.example.hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
- 사용자가 등록한 Bean을 읽고 등록하는 역할 -> 같은 패키지 내부의 클래스 중 @Controller, @RestController, @Service, @Repository, @Configuration 등으로 표기된 클래스를 찾아 등록한다.
-WebController.java
package com.example.hello;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class WebController {
@GetMapping("/")
public String index() {
return "index";
}
}
- HTML 을 Response 하는 Controller 를 의미한다.
- Method 와 url은 Annonation으로 정의하며 return 값이 html 파일 이름이다.
- src/main/resources/template : View 파일들을 저장하는 기본 폴더.
- Controller 가 return 한 파일이름에 해당하는 파일을 이 폴더에서 찾아서 Response 한다.
- Thymeleaf 엔진은 분기문, 반복문 등을 이용해 동적으로 생성한 html 파일을 제공한다.
- 이와 같이 서버에서 완성된 html을 제공하는 방법을 SSR(Server-side Rendering)이라 한다.
- Spring MVC 프로젝트와의 차이점
- Spring boot 프로젝트 이전에는 Controller 가 들어있는 package 정보
- View Template 파일들을 둔 폴더 정보
- 등을 xml 파일로 따로 정의했다.
- Spring boot는 MainApplication의 하위 폴더에서 Controller 를 찾고 지정된 default 폴더에서 Template 파일들을 찾기때문에 프로젝트 설정 항목을 줄여준다.
DTO란?
- Data Transfer Object 약자로, 계층 간(Controller, View, Business Layer) 데이터 교환을 위한 Java Bean이다.
- 쉽게 말해 getter, setter 메소드만 가진 클래스
Spring Framework 소개
- https://tomcat.apache.org/ Open Source
- 버전 10 이후 - Java EE Platform의 개선 버전인 Eclipse 재단의 Jakarta EE Platform 규격의 구현체
- 이전 버전 - Java EE Platform의 일부분으로 구현됨
Jsp & Servlet
- Request를 보내는 주소가 서비스나 데이터가 아닌 물리적인 파일 위치나 파일 이름이 된다.
- 데이터 베이스에 접속하는 코드가 각 파일에 반복된다. -> 개발자의 역량에 따라 구조 및 효율이 매우 달리질 수 있다. -> 유지 보수 및 업데이트가 매우 어려운 구조. -> 반복되는 코드가 여러 파일에 분산될 수 있다.
model 2
- MVC 가 구분되어 구현되고 유연한 구조가 되었지만 이러한 구조를 개발자가 직접 잡아야 함.
- 새 프로젝트를 만들 때 마다의 반복적인 코딩 작업이 많음
- Dispatcher Servlet으로 요청을 받고 해당 Servlet에서 Controller로의 매핑을 하여준다.
Spring Framework
- Spring이 Dispatcher Servlet은 자동으로 짜준다. 우리는 Controller만 작성하면 된다.
- DB도 웬만하면 자동으로 짜주기 때문에 보다 편하게 사용할 수 있는게 Spring Framework이다.
Spring Boot
- 자주 사용되는 라이브러리 관리
- 연관된 라이브러리들의 버전 통일화
- 자주 사용되는 라이브러리 자동 포함
- 자주 사용하는 설정 자동화
- Controller package, dbcp 등
- 내장 서버와 함께 배포
- 실행가능한 jar 로 배포: 서버와 함께 배포
의존성 주입(Dependency Injection)
제 3의 누군가가 객체를 만들어주는 것
- Spring Framework의 주요 특성, 최근 소프트웨어 개발의 트랜드 중 하나
- 의존성 주입을 위해서는 특수한 환경이 필요하며 ..
- 특정 객체는 특별한 관리가 필요하다고 표기한다. (Bean)
- Annotation, xml, Java 설정 클래스 등에 정의해 놓은 항목들을 찾는다.
- 환경이 관리하는 메모리 공간(Spring Container)에 객체들을 저장한다.
- 관리하는 객체를 필요하다고 하는 경우 만들어둔 객체를 제공한다.
- 특정 객체는 특별한 관리가 필요하다고 표기한다. (Bean)
Controller 가 특수하게 관리를 한다.
- 스프링 앱이 실행되면서 객체들을 관리할 Container가 만들어진다.
- ApplicationContext : 앱 전체에 대한 Container
- 웹환경이 아닌 독립적인 Bean 들이 담긴다. (Service, Database 등)
- WebApplicationContext : 웹 및 Servlet 에 대한 Container
- Web Controller 등에 대한 Bean 들이 담긴다.
- 그 외 SecurityContext 등 다양한 Context를 가질 수 있다.
프로젝트 살펴보기
-HelloApplication.java
package com.example.hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
- 사용자가 등록한 Bean을 읽고 등록하는 역할 -> 같은 패키지 내부의 클래스 중 @Controller, @RestController, @Service, @Repository, @Configuration 등으로 표기된 클래스를 찾아 등록한다.
-WebController.java
package com.example.hello;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class WebController {
@GetMapping("/")
public String index() {
return "index";
}
}
- HTML 을 Response 하는 Controller 를 의미한다.
- Method 와 url은 Annonation으로 정의하며 return 값이 html 파일 이름이다.
- src/main/resources/template : View 파일들을 저장하는 기본 폴더.
- Controller 가 return 한 파일이름에 해당하는 파일을 이 폴더에서 찾아서 Response 한다.
- Thymeleaf 엔진은 분기문, 반복문 등을 이용해 동적으로 생성한 html 파일을 제공한다.
- 이와 같이 서버에서 완성된 html을 제공하는 방법을 SSR(Server-side Rendering)이라 한다.
- Spring MVC 프로젝트와의 차이점
- Spring boot 프로젝트 이전에는 Controller 가 들어있는 package 정보
- View Template 파일들을 둔 폴더 정보
- 등을 xml 파일로 따로 정의했다.
- Spring boot는 MainApplication의 하위 폴더에서 Controller 를 찾고 지정된 default 폴더에서 Template 파일들을 찾기때문에 프로젝트 설정 항목을 줄여준다.
DTO란?
- Data Transfer Object 약자로, 계층 간(Controller, View, Business Layer) 데이터 교환을 위한 Java Bean이다.
- 쉽게 말해 getter, setter 메소드만 가진 클래스