목차
1. Spring Framwork 개념
2. Spring Framwork 환경 구축
3. Spring MVC 프로젝트
4. DI (Dependency Injection)
1. Spring Framwork 개념
1) Spring이란?
- 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션
- 엔터프라이즈급 개발이란 기업을 대상으로 하는 개발로서, 대규모 데이터 처리와 트랜잭션이 동시에 여러 사용자로부터 행해지는 매우 큰 규모의 환경을 의미
- 객체의 생성 및 소멸 그리고 라이프 사이클을 관리하며 언제든 Spring 컨테이너로부터 필요한 객체를 가져와 사용 가능
2) Spring Framework 특징
① 경량 컨테이너(크기와 부하의 측면)로서 자바 객체를 직접 관리
② 제어 역행(IoC : Inversion of Control)
- 애플리케이션의 느슨한 결합을 도모
③ 의존성 주입(DI : Dependency Injection)
- 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
④ 관점지향 프로그래밍(AOP : Aspect-Oriented Programming)
- 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
⑤ 모델-뷰-컨트롤러 패턴
- 웹 프로그램밍 개발 시 거의 표준적인 방식인 "Spring MVC"라 불리는 모델-뷰-컨트롤러(MVC) 패턴을 사용한다.
2. Spring Framework 환경 구축
- Spring Framework 환경 구축을 하는 방법은 두 가지가 있다.
① Eclipse에 STS(Spring Tool Suite) 프로그램을 plugin으로 추가해서 사용하는 방법
② STS 프로그램 다운로드 받아서 사용하는 방법
1) 이클립스에 플러그인 추가
- 이클립스 [Help] > [Eclipse Marketplace] > ‘sts’ 검색
- 검색 결과 화면에서 ‘Spring Tools 3 (Standalone Edition) 3.9.13.RELEASE’ 설치
- 플러그인 설치 후 [File] > [New] > [Other…]을 선택하면 Spring 메뉴 생성됨
2) STS 프로그램 다운로드
- 웹사이트(https://spring.io/tools)에서 STS 프로그램 다운
- 3점대 프로그램을 설치해야 Spring 프로젝트와 Spring Boot 프로젝트를 만들 수 있다.
3. Spring MVC 프로젝트
1) Spring MVC 프로젝트 생성
- 이클립스 [File] – [New] – [Project] 클릭
- Spring 메뉴에서 ‘Spring Legacy Project’ 선택하고 ‘Next’ 버튼 클릭
- Project name 설정하고, Templates 항목에서 ‘Spring MVC Project’ 선택 후 ‘Next’ 버튼 클릭
- 다운로드 창에서 ‘Yes’ 클릭
- top-level package 입력(도메인명 역순으로 입력)
2) Spring MVC 흐름도
- Spring 프로젝트를 실행시키면 web.xml 파일을 가장 먼저 실행하게 되는데, web.xml 파일에서 Dispatcher Servlet 클래스를 찾아간다.
- ModelAndView(높은 버전에서는 Model) 메소드는 model2 방식에서 request로 값을 공유하는 것과 같은 역할을 한다.(ex. model.addAttribute("serverTime", formattedDate ); )
- ViewResolver는 view 페이지 설정과 관련이 있는데, prefix는 view 페이지(jsp 파일)의 경로 값이, suffix에는 확장자(.jsp)가 설정되어 있다. (컨트롤러에서 return “home”; 으로 설정하면 home.jsp 파일로 이동)
4. DI (Dependency Injection)
1) 제어의 역행(Inversion of Control, IoC)과 의존성 주입(Dependency Injection, DI)
• IoC (Inversion of Control)
- 기존 사용자가 모든 작업을 제어하던 것을 특별한 객체(컨테이너)에 모든 것을 위임하여 객체의 생성부터 생명 주기 등 모든 객체에 대한 제어권이 넘어간 것
• DI (Dependency Injection)
- 의존성 주입이란 객체가 서로 의존하는 관계가 되게 의존성을 주입하는 것을 의미한다.
- 프로그래밍에서 모듈 간의 의존성을 모듈의 내부가 아닌 외부(컨테이너)에서 주입시킨다.
- 의존성 주입(DI)에는 ‘Constructor Injection’과 ‘Setter Injection’ 방식이 있다.
- 의존성 주입(DI)를 통해 모듈 간의 결합도가 낮아지고 유연성이 높아진다.
2) 기존 시스템
<인터페이스 상속을 하지 않는 경우>
- 애플리케이션에서 개발자가 직접 객체를 생성해서 사용한다.
- 애플리케이션에서 직접 클래스 객체를 생성해서 메소드를 사용하기 때문에 의존성이 너무 강하다. (tight coupling)
<인터페이스 상속을 하는 경우>
- 인터페이스를 사용함으로써 조금 느슨한 결합(loose coupling)으로 변환되어서 유연성을 제공할 수 있다.
- 인터페이스를 사용함으로써 조금 느슨한 결합을 하여도 여전히 인터페이스와 객체에 의존적이다.
3) IOC 방식 – DI (Dependency Injection 구현)
- Spring의 환경 설정 파일(ex. beans01.xml)에서 bean 객체를 생성하고, main 메소드가 있는 자바 클래스에서 호출한다.
- Bean 객체를 생성하는 환경 설정 파일에서는 <bean> 태그로 객체를 생성한다.
(ex. <bean id=”mb” class=”sample03.MessageBeanKr” name=”a”></bean> )
① 생성자를 이용한 의존성 주입: Constructor DI (Dependency Injection)
- 생성자의 매개변수에 값을 전달하는 방식
- Sample04
② Setter 메소드를 이용한 의존성 주입: Setter DI (Dependency Injection)
- Setter 메소드를 생성하고, 메소드의 매개변수에 값을 전달하는 방식
- Sample05
• 스프링의 환경설정 파일 위치(ex. beans01.xml)
1) 같은 패키지: “패키지명/파일명”으로 설정(ex. "/sample07/beans07.xml")
2) resources 폴더: “classpath:파일명”으로 설정 (ex. "classpath:beans08.xml")
3) 프로젝트 디렉토리 하위: “파일명”으로 설정 (ex. "beans01.xml")
* Dynamic project 생성시 오류 해결
- 이클립스에 sts 플러그인 프로그램을 추가하면 Dynamic Web Project를 생성할 때 src와 WebContent 폴더가 자동으로 생성되지 않는 오류가 발생한다.
- 프로젝트 생성시 직접 폴더명을 설정해서 해결 가능하다.
'Spring' 카테고리의 다른 글
94일차: Spring 게시판 환경 설정 / 글 작성 / 글 목록 / 상세 페이지_2021.11.01 (0) | 2021.11.01 |
---|---|
93일차: Spring DB 연동 / Spring 게시판 환경 설정_2021.10.29 (0) | 2021.10.29 |
92일차: Mybatis와 Spring으로 DB 연동_2021.10.28 (0) | 2021.10.28 |
91일차: Spring_컨트롤러의 어노테이션 / JSON 변환 / 인터셉터 / mybatis와 model1_2021.10.27 (0) | 2021.10.27 |
90일차: Spring Framework Anotation DI / Spring MVC_2021.10.26 (0) | 2021.10.26 |