jnk1m
Foliage IT
jnk1m
전체 방문자
오늘
어제
  • 분류 전체보기 (209)
    • Today I Learned (34)
    • Java (47)
    • Database (15)
    • [NHN Academy] (27)
    • Spring (47)
    • HTML + CSS + JavaScript (11)
    • JSP (3)
    • Node.js (10)
    • React Native (2)
    • 기타 (8)
    • 스크랩 (5)

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
글쓰기 / 관리자
jnk1m

Foliage IT

Spring

[Spring] Day01 (Note): 프레임 워크, 초기 세팅, MVC 패턴, 폴더 구조

2022. 3. 16. 17:18

 

2022/3/16

 

Framework 프레임 워크
프레임을 공부하는 것은 매뉴얼 익히는 거라 생각하면 됨. 언어를 공부한 다기보단 사용법을 익힌다고 생각.
필요한 형태를 조립하며 개발할 수 있다.

*
스프링 버전에 따른 변화
2.5
버전: 어노테이션을 활용하는 설정 도입, 편리한 설정과 개발 가능
3.0
버전: 별도의 설정이 없어도 Java 클래스만으로 설정 파일을 대신할 수 있게 지원
4.0
버전: 모바일 환경과 웹 환경에서 많이 사용되는 REST 방식의 컨트롤러 지원
5.0
버전: Reactor를 이용한 Reactive 스타일의 개발 환경 지원 (비동기식 처리가 된다)

*
한국에서 많이 사용하는 프레임워크
Spring framework
전자정보 프레임워크 (Spring 기반)
.NET framework
Struts
PHP
자체 프레임워크

*
스프링
Spring MVC
프레임워크: 웹 프로그래밍 기반
Spring AOP
프레임워크: 설계 기반
Spring Boot
프레임워크: 모든 설계 환경들을 합쳐 놓은 것.

 

Spring Framework

1.  특징
-POJO
기반 구성: Plain Old Java Object: 일반적인 자바 코드를 이용해 객체를 구성하는 방식을 그대로 스프링에서 사용할 수 있다. 특정 라이브러리나 컨테이너의 기술에 종속적이지 않음.
-MVC
웹 프레임워크 제공: MVC 모델 가지고 있음.
-DI/ IoC: Dependency Injection(
의존성 주입) / Inversion of Control(제어의 역전).
의존성 주입: 객체를 대여하는 개념. 무분별한 객체 생성을 줄여서 메모리 낭비 최소화하기 위한 방법으로 만들어 놓은 것을 잠시 빌려 쓰고 돌려주는 개념.
제어의 역전: 개발의 주도권이 개발자가 아닌 스프링에게 역전된다. 제어권은 스프링이 가지고 있다.
-AOP: Aspect Oriented Programming
관점 지향 프로그래밍.
대부분 시스템이 공통으로 가지고 있는 보안이나, 로그, 트랜젝션 같이 메인 비즈니스 로직은 아니지만 공통적으로 반드시 처리가 필요한 부분을 횡단 관심사 (Cross-concern)라고 하고 스프링은 이런 횡단 관심사를 분리해서 제작하는 것이 가능.
AOP
는 이런 횡단 관심사를 모듈로 분리하는 프로그램 패러다임임.
POP:
절차 지향: C
OOP:
객체 지향: Java, C++
AOP:
관점 지향: 기술이 아니라 진행되는 추상적인 개념이다. framework에 존재. 해당 조건에 맞으면 자동으로 돌아가는 클래스들이 존재함.

 

세팅
#1. Spring
개발 환경 세팅
개발 환경 필요 요소: (우리 수업 기준으로)
-JDK 11 (
환경 변수 세팅 완료한)
-
이클립스 + plugin 추가 /또는/ STS(이클립스)
-DB
오라클 (19c) / SQL Developer 등 DBMS 활용 툴
-
스프링 라이브러리
-Mybatis
프레임워크 (추후 추가)

#2.  Spring
툴
IDE TOOl: Eclipse +
플러그인, Eclipse 기반 STS, IntelliJ
*
개발환경 세팅 방법: 이클립스에 플러그인 추가해서 프로젝트 생성 / STS로 프로젝트 생성

프로젝트 생성하는 방식
-Spring
기본 방식: lib 폴더에 스프링 라이브러리들 넣기 (offline)
-Spring Maven
방식: 많이 사용 (online)
-Spring Gradle
방식: 근래에 많이 보임.

STS 세팅

1.  다운 받은 STS4를 (한글이 없는) 경로에 놓고 압축해제 > Contents도 압축 해제

2.  SpringToolSuite4.exe (초록색 아이콘) 실행

3.  workspace 폴더 경로 잡고

4.  Help > Market place… 선택 > 팝업 Find 부분에 ‘sts’라고 검색 > STS 3 Add on… install 하고 기다리기 > 툴 재부팅

5.  오른쪽 상단 + (open perspective) 아이콘 클릭해서 Spring 선택하고 확인. (스프링 개발 모드로 변경됨)

6.  인코딩 세팅 (UTF-8)

7.  서버 세팅: Tomcat 9 압축 해제 해놓은 곳으로 잡아서 세팅.
확인: 서버 스타트하기 전에 오른쪽 클릭하여 애드 앤 리무브, 오른쪽으로 넘겨줘서 서버 올려준 다음에 실행 잘되는지 확인하기.  

8.  프로젝트 생성 (File > New > Spring Legacy Project 선택) > project name: myspring, Spring MVC… 체크 > next > 기본 패키지 명 3단계로 작성: com.basic.controller> finish! 기다린다…
*
부수적인 에러는 잘 처리!

9.  pop.xml 에서 자바 버전 전부 1.6에서 11로 변경 , 스트링프레임워크 3.1.1에서 5.1.5 release로 변경

Eclipse에 STS3 플러그인 추가

1.  이클립스 새로 압축 해제(최신 버전은 안되서 2020-12 버전으로 다운 받아 진행)

2.  STS3 플러그인 추가. Help > Market place> find에 ‘sts3’ 검색 > STS3 (Standalone) 인스톨. accept 체크하고 finish하면 인스톨됨. 되는 동안 건들지 말기.> 재부팅

3.  오른쪽 상단 + open perspective > Spring 선택

4.  서버 세팅: Tomcat 9 압축 해제해놓은 곳으로 잡아서 세팅.
확인: 서버 스타트하기 전에 오른쪽 클릭하여 애드 앤 리무브, 오른쪽으로 넘겨줘서 서버 올려준 다음에 실행 잘되는지 확인하기.  

5.  프로젝트 생성 (File > New > Spring Legacy Project 선택) > project name: myspring, Spring MVC… 체크 > next > 기본 패키지 명 3단계로 작성: com.basic.controller> finish! 기다린다…

6.  pop.xml 세팅
java-version: 11 (jdk
버전)
Spring framework- version: 3.1.1
에서 5.1.5 release로 변경
->
프로젝트 폴더 우클릭 > Maven> update project 선택, enter!

7.  myspring> 오른쪽 클릭> 프로퍼티스 > 자바 빌드 패스 > libraries (활성화 안되면 내용 아무거나 눌러보기) > add library > 서버 런타임 > 톰캣 > apply


MVC (MVC 패턴, MVC Architecture)
M: Model:
비즈니스 로직 처리 담당: DAO, Service, DTO 등등 자바 클래스
V: View:
화면에 보여주는 역할: jsp 파일 (자바코드x 태그로만 작성)
C: Controller:
사용자의 요청을 받고, Model과 View의 흐름 제어. 원래는 servlet인데 우리는 java로 서블릿을 생성될 수 있게끔?
JSP
처럼 한 번에 다 넣는 게 아니라 파일 담당을 따로따로 분리. 각각 자기가 해야 하는 일을 구분을 따로 만들어 모듈로 쪼개서 처리하고 관리하도록.

폴더 구조
src/ main/ java     : main
코드들이 위치할 공간. 자바 클래스 작성
src/ main/ resources:
실행 시 참고하는 설정 파일 등 소스들
src/ test/ java     :
테스트 코드 넣는 패키지
src/ test/ resources:
테스트할 때 필요한 소스들

src
 main
  webapp
   resources               : js, css, 이미지이미지
파일 등등
   WEB-INF
     classes               :
자바 컴파일된 소스 폴더 (우리는 사용 안 함) 저장된 폴더
       appServlet
         servlet-context.xml:
서블릿(웹) 관련 설정
       root-context.xml    :
스프링 전체 관련 설정
     view                  : jsp
파일들 위치할 곳
       home.jsp
     web.xml               :
프로젝트 전체 설정
 pom.xml                   : Maven
방식의 라이브러리 관리하는 파일

    'Spring' 카테고리의 다른 글
    • [Spring] Day03 (Code)
    • [Spring] Day03 (Note): 테스트, 스프링 빈, 파라미터 전달, Model
    • [Spring] Day02 (Code)
    • [Spring] Day02 (Note): pom.xml 세팅, 컨트롤러, 메서드 리턴 타입, 의존성 주입

    티스토리툴바