2020년 01월 29일

업데이트:


Spring Framework란?

스프링 프레임워크는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 한다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있으며, 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준 프레임워크의 기반 기술로서 쓰이고 있다.1




Spring Framework의 특징

  • IOC(Inversion of Control) 제어 반전
    • 컨트롤의 제어권이 개발자가 아니라 프레임워크에 있다는 뜻으로 객체의 생성부터 모든 생명 주기의 관리까지 프레임워크가 주도하고 있다. 객체를 생성하고, 직접 호출하는 프로그램이 아니라, 만들어둔 자원을 호출해서 사용한다.
  • DI (Dependency Injection) 의존성 주입
    • 설정 파일이나 어노테이션을 통해 객체 간의 의존 관계를 설정하여 개발자가 직접 의존하는 객체를 생성할 필요가 없다.
  • POJO(Plain Old Java Object) 기반 프레임워크
    • J2EE, EJB와 같은 특정 기술이나 라이브러리 없이 유용한 기능을 그대로 사용할 수 있고, 순수한 자바 객체를 사용하듯이 자바의 객체지향적 설계가 가능하다. 코드가 간결해져서 개발이 쉽고, 기존 JAVA API, 라이브러리 지원에 용이하다.
  • Spring AOP(Aspect Oriented Programming) 관점 지향 프로그래밍
    • 트랜잭션, 로깅, 보안 등 여러 모듈, 여러 계층에서 공통으로 필요로 하는 기능의 경우 해당 기능들을 분리하여 관리한다.
  • Spring JDBC
    • Mybatis나 Hibernate 등의 데이터베이스를 처리하는 영속성 프레임워크와 연결할 수 있는 인터페이스를 제공한다.
  • Spring MVC
    • MVC 디자인 패턴을 통해 통해 웹 어플리케이션의 Model, View, Controller 사이의 의존 관계를 DI 컨테이너에서 관리하여 개발자가 아닌 서버가 객체들을 관리하는 웹 애플리케이션을 구축할 수 있다.
  • PSA(Portable Service Abstraction)
    • 스프링은 다른 여러 모듈을 사용함에 있어 별도의 추상화 레이어를 제공하기 때문에 개발자는 모듈의 의존 없이 프로그램에 집중할 수 있다.




Spring MVC

Spring Framework에서는 클라이언트의 화면을 표현하기 위한 View와 서비스를 수행하기 위한 개발 로직 부분을 나누는 MVC2 패턴을 지원한다. 또한 Model, View, Controller 사이의 의존 관계를 DI 컨테이너에서 관리하여 유연한 웹 애플리케이션을 쉽게 구현 및 개발할 수 있다.



Spring MVC 구성 요소

  • DispatcherServlet
    • 클라이언트의 요청(Request)을 전달 받고, 요청에 맞는 컨트롤러가 리턴한 결과 값을 View에 전달하여 알맞은 응답(Response)을 생성함
  • HandlerMapping
    • 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 결정함
  • Contorller
    • 클라이언트의 요청을 처리한 뒤, 결과를 DispatcherServlet에게 리턴함
  • ModelAndView
    • 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담음
  • ViewResolver
    • 컨트롤러의 처리 결과를 생성할 View를 결정함
  • View
    • 컨트롤러의 처리 결과 화면을 생성, JSP나 Velocity 템플릿 파일 등을 View로 사용




Spring 준비하기

프레임워크 사용 시 폴더 경로에 한글이 있을 경우 문제가 될 수 있는 경우가 있으므로 폴더 명에 한글이 포함되지 않도록 주의한다.




인코딩 설정(UTF-8)

이클립스 상단 Window - Preferences에서 다음과 같이 설정한다.


  • Content Types 설정
    image


  • Workspace 설정
    image


  • Web / XML 설정
    image


  • Spelling 설정
    image


  • json 설정
    image




Tomcat(톰캣) 설정

이클립스 상단 Window - Preferences에서 다음과 같이 설정한다.

  • Runtime Environments
    image


  • 개발 환경에 맞는 톰캣 버전 선택
    image


  • 톰캣 경로 잡아주기
    image




Maven Framework

Maven이란 자바용 프로젝트 관리 도구로, Project Object Model(POM) XML 문서를 통해 해당 프로젝트의 버전 정보 및 라이브러리 정보들을 통합하여 관리하는 프레임워크이다. 라이브러리를 다운(설치) 받을 폴더를 명시적으로 지정하여 관리하는 것이 좋다.



maven

👆🏼 이미지 클릭 시 공식 홈페이지로 이동



  • Use-Download 클릭
    image


  • Binary zip archive 다운
    image

  • 원하는 경로(개발 폴더 추천)에 알집을 푼다.


  • repository 새폴더 생성
    image


  • conf > settings.xml 편집
    settings.xml 파일을 수정할 때는 settings.xml 우클릭 후 연결 프로그램에서 vs 코드를 선택해 편집하는 것이 편리하다.
    경로 부분에는 위에서 생성한 repository 경로를 작성한다.
    image

  • 이클립스 내 상단 Window - Preferences 설정에서 setting.xml 경로 설정
    image




STS 설치

STS란 Spring Tool Suite의 약자로, Spring Framework를 사용하기 위한 개발 툴을 말한다. 일반적으로는 별도의 설치 도구를 통해 설치하여 사용 가능하고, 이클립스 IDE에서 제공하는 STS 플러그인을 통해 간단히 설치할 수도 있다. 이 포스팅에서는 STS 플러그인으로 설치하는 방법을 안내한다.



  • 이클립스 상단 Help - Eclipse Marketplace에서 STS를 설치한다.
    image


  • 설치 완료 후 restart를 진행한다.


  • Eclipse.ini 설정
    이클립스 버전에 따라 JDK 버전이 너무 낮으면 실행 시 버전 호환 문제로 인한 오류가 생갈 수 있으므로 이클립스 내장 버전이 아닌 현재 설치된 자바 버전을 인식하도록 eclipse.ini 구성 설정 파일에 다음과 같은 내용을 추가한다.
    편집은 eclipse.ini 우클릭 > 연결프로그램에서 메모장을 선택하면 된다.
    image


  • 이클립스를 재실행한다.


재실행 된 이클립스에서 Project Explorer 빈 곳을 클릭 후 Ctrl + n을 눌러 다음과 같이 뜨면 설치 완료!
image





Spring 프로젝트 생성

  • Project Explorer 빈 곳을 클릭 후 Ctrl + n > Spring Legacy Project 클릭
    image


  • 프로젝트 이름 작성 후 Templates에서 Spring MVC Project 클릭
    image


  • Next를 클릭하면 다음과 같은 창이 뜬다. MVC Project를 사용하기 위한 추가 파일을 다운로드를 할거냐고 물어보는 팝업이니 yes 클릭
    image


  • 패키지 명을 적어준다.
    image


  • 라이브러리를 추가하기 위해 다음 경로에 lib 폴더 생성
    JSTL을 사용하기 위한 라이브러리를 넣어주었다.
    라이브러리 다운
    image


  • 만약 views - home.jsp에서 오류가 난다면 C 태그를 다시 설정해준다.
    image


  • 프로젝트 우클릭 > Properties > project Facets 설정
    image




pom.xml 설정

pom에서 자바나 spring 버전 등을 설정하고 라이브러리를 다운받기 위해 다음과 같이 수정한다. 수정 중간에 저장을 누르면 수정한 라이브러리들이 새로 다운로드 된다.

<!-- 생략 -->
	<modelVersion>4.0.0</modelVersion> <!-- 메이븐 버전  -->
	<groupId>com.test</groupId>
	<artifactId>spring</artifactId> <!-- 최상위 주소 -->
	<name>springProject</name>
	<packaging>war</packaging> <!-- 배포용 버전(아카이브 파일) -->
	<version>1.0.0-BUILD-SNAPSHOT</version>

	<!-- properties : 메이븐이 적용된 프로젝트에서 공통적으로 사용할 버전 또는 설정 값을 작성하는 태그 -->
	<properties>
		<java-version>1.8</java-version>
		<!-- 기존에 작성된 3.1.1 버전은 15년도에 나온 버전이라 너무 오래되어서 바꿔줘야함  
				버전 확인은 스프링 공홈 > project > spring Framework에 들어가면 있음
				최신버전은 안전성이 확인되지 않았으므로 5.2.8 버전 사용 -> 저장 -> Libraries > Maven dependencies 알아서 업뎃
			-->
		<org.springframework-version>5.2.8.RELEASE</org.springframework-version>
		<org.aspectj-version>1.9.4</org.aspectj-version>
		<org.slf4j-version>1.7.25</org.slf4j-version>
	</properties>

	<!-- dependencies : Maven 프로젝트는 외부 저장소와 의존 관계를 맺고 있어 
			프로젝트에 필요한 파일을(라이브러리) 사용자가 직접 받을 필요 없이
			해당 태그 내에 지정된 형식으로 작성하면 네트워크를 통해 외부 저장소에서 자동으로 얻어와 세팅함.
	-->
	<dependencies>
		<!-- GSON 라이브러리 -->
		<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
		<dependency>
		    <groupId>com.google.code.gson</groupId>
		    <artifactId>gson</artifactId>
		    <version>2.8.6</version>
		</dependency>

<!-- 생략 -->

		<!-- Maven에서 제공하는 JSTL이 정상 적용이 되지 않아서 주석처리함 -->
<!-- 		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency> -->
<!-- 생략 -->




외부 저장소 이용 방법

  • 외부 저장소 홈페이지

  • 검색창에 원하는 라이브러리 이름 검색

  • 원하는 버전 선택
    image


  • 코드 복사 후 pom.xml에 붙여넣기
    image


  • 라이브러리 확인하기
    image







  1. 출처 : 위키백과 

태그:

카테고리:

업데이트:

댓글남기기