basic/spring

[spring 01] Framework, Spring framework

못지(Motji) 2021. 7. 29. 16:33

Framework 프레임워크

Spring framework

• 경량프레임워크, 프로젝트 전체 구조 설계할때 유용

• 다양한 분야에서 사용하는 프레임워크, 엡에서 주로 많이 사용, 다른 프레임워크 포용(여러프레임워크 혼용가능), 개발도구 지원

❔ spring framework를 왜 쓸까

• 회사입장 : 일정한 품질이 보장되는 결과물을 얻을 수 있음

• 개발자 입장 : 완성된 구조에 자신이 맡은 코드를 개발해서 넣는 구조로 개발시간 단축, 개인적 개발실력의 차이를 약간 극복

스프링 버전에 따를 눈에 띄는 변화

• 2.5 : 어노테이션을 활용하는 설정 도입, 편리한 설정과 개발 가능

• 3.0 : 별도의 설정없이도 Java클래스만으로 설정파일을 대신할 수 있게 지원

• 4.0 : 모바일환경과 웹 환경에서 많이 사용되는 REST방식의 컨트롤러 지원

• 5.0 : Reactor를 이용한 Reactive 스타일의 개발 환경 지원

우리나라에서 많이 사용하는 프레임워크

• Spring Framework

• 전자정보 프레임워크 (관공서 같은곳)

• .NET Freamwork

• Struts

• PHP

• 자체 프레임워크

 

* 스프링은 스프링프레임워크만 단독으로 사용하기 보다는 여러 스프링 관련 프로젝트를 함께 사용한다.

Framework 가이드

• 프레임워크 사용법

http://spring.io/ 

 

• Spring MVC 프레임워크 : 웹 프로그래밍 기반

• Spring AOP 프레임워크 : 설계 기반

• Spring Boot 프레임워크 : 모든 설계 환경들을 합쳐놓은것

Spring Freamework

✔ 특징

☑  POJO 기반 구성 (Plain Old Java Object)

∙ 일반적인 자바 코드를 이용해 객체를 구성하는 방식 그대로 스프링에 사용할 수 있음

☑  MVC 웹 프레임 워크 제공 : MVC 모델 가지고 있음

☑  DI (Dependency Injection) 의존성 주입 / IoC (Inversion of Control 제어의 역전

∙ 객체를 대여하는 개념

∙ 만들어놓은 객체를 잠시 빌려쓰고 돌려주는 개념

☑  AOP (Aspect Oriented Programing) 관점 지향 프로그래밍

∙ 대부분의 시스템이 공통적으로 가지고 있는 로그, 트랜젝션, 보안 등 같이 비지니스 로직은 아니지만 반드시 처리가 필요한 부분을 횡단관심사라 하고, 스프링은 이런 횡단 관심사를 분리해서 제작하는 것이 가능

∙ AOP는 이런 횡단관심사를 모듈로 분리하는 프로그래밍 패러다임 이다.

👀

▫ POP Procedural Oriented Programing : 절차지향 : C

▫ OOP Object Oriented Programing : 객체지향 : Java, C+

▫ AOP Aspect Oriented Programing : 관점지향 : 개발자가 만들어놓은 기능을 사용자의 관점에 따라 목적에 맞으면 사용되고 그 사용처가 관점에 따라 다양해질 수 있는것

▸절차 + 관점 사용가능 / 객체 +관점 사용가능

✔ Spring 개발 환경 세팅

- JDK 1.8 (환경변수 세팅 필수)

- STS/Eclipse 툴 사용

- Tomcat 8.5 Server

- 오라클 DB(DBMS) 19c / SqlDeveloper 툴

- 스프링 MVC 프로젝트 생성 / 라이브러리 추가

- Mybatis (DB 프레임워크)

✔ Spring Tool

☑ IDE Tool

가장 많이 사용하는 통합개발도구 Eclipse 기반인 STS(Spring Tool Suite), 기본 Eclipse나 Intellij에 플러그인 형태로 사용

이클립스 : 기존에 사용하는 방법

STS : 스프링에서 배포해주는 eclipse

 

▪ 방법

- STS3 로 스프링

- 기존에 사용하던 일반 이클립스에서 STS3 프러그인 추가

- 기존에 사용하던 일반 이클립스에 Maven 프로젝트로 변경해 스프링라이브러리 추가하는 방식 (환경세팅 전부 다해야

 

☑ 프로젝트 생성방식

Spring 기본 방식 : lib 폴더에 스프링라이브러리들 다운받아 넣기 (offline)

Spring Boot 방식

Spring Maven 방식 : 많이 사용 (online)

SPring Gradle 방식 : 호주, 미국에서 많이 사용

✔ STS 세팅

1) STS 다운받아 설치

∙ Spring.od > project > Sprint Tool 4 > 하단에 Sts3 wiki 링크 클릭 > 하위버전 다운받아 압축해제

2) 서버세팅

3) 프로젝트 생성

∙ File - New - Spring Legacy Project > Project Name : 프로젝트명 / Template : Spring MVC Project 선택 > base package : com.spring.controller  등 3단계로 작성 > finish

❗ 주의 : 프로젝트 생성하고 하단에 프로그레스바가 완료될때까지 건드리지말고 기다리기. 소요시간 1~10분 정도 

 

* STS4를 설치했을때 sts3 플러그인 추가 가능

- STS4에서는 Spring Legacy Project가 없으므로 sts 플러그인을 추가하면 해결된다.

- Help - Eclipse MarketPalce - Find에 sts 검색 - Spring Tool 3 Add on ~~ 나오면 Install 버튼 눌러서 설치

👀 폴더 설명

src/main/java : 자바로 작성되는 클래스들 위치할 곳 (패키지로 분리)

src/main/resources : 실행할때 필요한 자원같은 파일들 위치할 곳 (예를들어 부수적인 설정파일들)

src/test/java : 테스트 코드 작성하는 곳

src/test/resources : 테스트용 자원 위치할 곳

  • src
    • main
      • webapp : (webContent랑 비슷) 존재하지 않는 가상의 폴더
        • resources : js, css, img 등 외부에서 접근 가능한 자원
        • WEB-INF
          • classes : 컴파일된 자바 소스가 저장되는 곳
          • spring
            • root-context.xml : Root 컨테이너 설정 파일 (Root Context) : 공통으로 사용하는 것들 세팅 (부모설정)
            • appServlet
              • servlet-context.xml : Servlet 컨테이너 설정 파일 (Servlet Context) : 컨트롤러와 관련된 것들 세팅 (자식설정)
          • views : jsp 파일들 위치할 곳
          • web.xml : 전체 매핑해주는 것
  • pom.xml : maven 방식으로 라이브러리 관리시 사용되는 설정 파일 (라이브러리 관리함)

✔ Eclipse

☑ Dynamic Web Project > Maven 으로 Convert 해서 Spring 개발

1) Eclipse 새로운것 실행 > Workspace 경로 새로운곳으로 설정하고 스타트

2) Encoding > utf-8 세팅

3) Server 세팅

4) 프로젝트 생성 : Dynamic Web Project > next > next > web.xml 생성한다에 체크하고 finish

5) 프로젝트를 Maven 방식으로 Converting하기

∙ 프로젝트폴더 우클릭 > Configure > Convert to Maven project 선택

∙ group id : 보통은 패키지 네이밍룰(도메인 뒤집기/3단계)을 따르는게 정석 

∙ artifact id : 일반적으로 jar 파일에서 버전정보를 뺀이름, 소문자로 작성, 특수기호와 띄어쓰기 불가

6) 라이브러리 추가 (spring 4.3.25 진행)

방법1. 라이브러리 검색해서 다운받아 WEB-INF > lib 폴더에 추가

방법2. maven 사이트에 가서 라이브러리 검색하여 Maven용 태그 복사해서 pom.xml에 추가

📌Maven 사이트
https://mvnrepository.com/

SpringContext

Spring web

Spring web MVC

 

❗ 전부 같은 version으로 배치해야 함