spring을 사용하여 프로젝트를 진행하는 와중에, 메이븐을 사용한다고 하고있었는데..

메이븐이 뭔지 잘 알지도 못하면서 사용하고 있었다는걸 알았다..!

메이븐에 대해 찾아보면서 빌드, 컴파일 등에 대해서도 추상적인 느낌만 알고있었다는걸 또 깨닫고

이것들에 대해 정리해보는 글을 작성해본다.

사실 이렇게 작성해도 설명하라면 못할거같다ㅠ열심히 공부해서 개발길만 걷자..,,


메이븐에 대해 알아보기 전에!

컴파일과 빌드가 무엇인지, 그 차이점이 무엇인지 먼저 정리해보자.

 

컴파일(Compile)

컴파일이란 개발자가 작성한 코드를 바이너리 코드로 변환하는것을 말한다. (흔히 알고있는 목적파일이 생성됨)

즉, 우리말로 작성된 코드를 컴퓨터가 이해할 수 있는 기계어로 바꾸는 것이다.

이러한 작업을 해주는것이 컴파일러(Compiler)이다.

자바의 경우, 자바 가상머신(JVM)에서 실행 가능한 바이트코드 형태의 클래스 파일이 생성된다.

 

빌드(Build)

소스코드 파일을 실행가능한 소프트웨어 산출물로 만드는 과정을 말한다.

빌드의 단계중에 컴파일이 포함되어 있는데, 컴파일은 빌드의 부분집합이라고 할 수 있다.

 

빌드 툴(Build Tool)

빌드 과정을 도와주는 도구이다.

전처리(Preprocessing), 컴파일(Compile), 패키징(Packaging), 테스팅(Testing), 배포(Destribution) 의 기능을 한다.

Ant, Maven, Gradle 등이 있다.


이제 빌드 툴의 한 종류인 메이븐에 대해 정리해보자.

 

메이븐이란?

자바 프로젝트의 빌드를 자동화해주는 빌드 툴이다.

즉, 자바 코드를 컴파일해서 패키징 후 디플로이를 자동화해주는 것이다.

 

pom.xml

자바 프로젝트에 빌드 툴을 maven으로 설정하였다면, pom.xml 파일이 생성되었을 것이다.

pom.xml은 POM(Project Object Model)을 설정하는 것으로, 프로젝트 내 빌드 옵션을 설정하는 부분이다.

꼭 pom.xml이라는 이름으로 해야할 필요는 없지만 암묵적인 원칙이기 때문에 pom.xml 이름을 사용하는 것이 좋다.

다른 파일로도 지정할 수 있다. (mvn -f [지정할파일.xml] test)

 

pom.xml 분석

업데이트 예정----

 

 

 

 

 

출처

https://freezboi.tistory.com/39

 

컴파일과 빌드 차이점

평소 이클립스와 같은 IDE를 사용하기 때문에 컴파일과 빌드의 개념에 대해 잘 알지 못했다. 단지 소스코드를 작성하고 이클립스에서 run을 실행하면 알아서 모든 과정이 자동으로 실행되기 때문이다. 그래서 컴파..

freezboi.tistory.com

https://jeong-pro.tistory.com/168

 

메이븐(Maven)은 알고 스프링(Spring)을 쓰는가? (pom.xml 분석하며 가볍게 정리하는 빌드 툴, Maven)

메이븐(Maven)은 알고 스프링(Spring)을 쓰는가? 제목과 같은 질문에 필자는 제대로 답변할 수 없었다. 단순하게는 maven repository에서 dependency 추가해서 필요한 라이브러리 쓰는 정도? 무엇을 위해 쓰는지,..

jeong-pro.tistory.com

'spring framework' 카테고리의 다른 글

[EL/JSTL]JSTL이란?  (0) 2018.06.20
[EL/JSTL]EL이란?  (0) 2018.06.19
[spring]spring framework 개념  (0) 2018.06.18

jsp파일에 자바형식의 코드를 사용할 때의 불편한 점을 해결하고자 등장한 것이 EL(Expression Language)과 JSTL(Jsp Standard Tag Library)이다.



JSTL(Jsp Standard Tag Library)

jsp는 자신만의 태그를 추가할 수 있는 기능을 제공한다. <jsp:include>나 <jsp:userbean>과 같은 커스텀 태그처럼 연산이나 조건문, 반복문 등을 편하게 처리할 수 있도록 제공하는 것이 JSTL이다.




종류

 분류

 접두어

특징 

URL 

 Core

 c

 일반 프로그래밍에서 제공하는 것과 유사한 변수 선언

http://java.sun.com/jsp/jstl/core

 실행 흐름의 제어 기능 제공

 페이지 이동 기술 제공

 XML

 x

 XML문서를 처리할 때 필요한 기능 제공

http://java.sun.com/jsp/jstl/xml

Formatting

 fmt

 숫자, 날짜, 시간을 포매팅하는 기능을 제공

http://java.sun.com/jsp/jstl/fmt

 국제화, 다국어 지원 기능 제공

 Database

 sql

 db의 데이터를 입력, 수정, 삭제, 조회하는 기능 제공

http://java.sun.com/jsp/jstl/sql

 Function

 fn

 문자열 관련 함수 제공

http://java.sun.com/jsp/jstl/functions


1
2
3
4
5
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
cs

이런 형식으로 사용하고자 하는 jsp파일에 임포트해주면 된다.




Core Tag

태그이름

 설명

태그이름

설명 

<c:set/>

 변수 선언 및 설정

<c:catch/>

 예외처리

<c:remove/>

 변수 제거

<c:forEach/>

 반복문

<c:out/>

 변수 출력

<c:forTokens/>

 구분자로 분할한 반복문

<c:/choose/>

 swich문, if-else문과 비슷

<c:url/>

 url생성

<c:when/>

<c:param/>

 파라미터 추가

<c:otherwise/>

<c:import/>

 페이지 첨부

<c:if/>

 조건문(else는 없음)

<c:redirect/>

 url 이동



나머지는 다음에...

jsp파일에 자바형식의 코드를 사용할 때의 불편한 점을 해결하고자 등장한 것이 EL(Expression Language)과 JSTL(Jsp Standard Tag Library)이다.



EL(Expression Language)

<%= %>, out.print()와 같은 자바코드를 사용하지 않고 더 간편하게 출력을 지원하기 위한 도구이다. 


문법

 - parameter 형식(request.setParameter("abc")) : ${param.abc}

 - attribute 형식(request.setAttribute("cnt", 100)) : ${cnt+1} (원래 <%=cnt+1%>)

 - 값을 찾을 때는 작은 Scope에서 큰 Scope으로 찾는다. (page -> request -> session -> application)


내장객체


 내장객체

 용도

pageScope

page영역에 존재하는 객체 참조 

requestScope 

request영역에 존재하는 객체 참조 

sessionScope 

session영역에 존재하는 객체 참조 

applicationScope

application영역에 존재하는 객체 참조 

param

parameter 값을 얻어올 때 사용 (1개의 key에 1개의 value)

paramValue

parameter 값을 배열로 얻어올 때 사용 (1개의 key에 여러개의 value)

header 

header 정보를 얻어올 때 사용 (1개의 key에 1개의 value)

headerValue

header 정보를 배열로 얻어올 때 사용 (1개의 key에 여러개의 value)

cookie

쿠키 객체를 참조 ( ${cookie.key값.value값}으로 쿠키 값 조회 )

initParam

초기 parameter 조회

pageContext

pageContext 객체 참조 


**paramValue / headerValue 사용법 두 가지!

 1. ${paramValue.array[0]} : index 0으로 시작

 2. ${paramValue[array][1]} : index 1로 시작

open source application framework for Java platform

Java 기반의 웹, 엔터프라이즈 애플리케이션 개발을 단순화하여 효율성과 생산성을 높일 수 있게 도와주는 container와 library들의 집합이다.



Spring을 이용한 애플리케이션 개발의 장점

- Dependency injection과 interface를 활용한 객체들 간의 느슨한 결합

- POJOs를 이용한 쉬운 개발(기존에 존재하는 라이브러리 등의 지원에 용이)

- Aspects와 common conventions, annotation을 통한 선언적 프로그래밍

- Aspects와 templates을 이용한 단순 반복 코드 제거



특징

- 크기가 작아 부하가 적으며 성능이 우수하다. java객체의 life-cycle을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.

- Dependency Injection(의존성 주입)을 지원한다. xml 또는 annotation 기반 설정을 통해 객체들간의 의존관계를 설정한다.

- 간단한 컴포넌트로 복잡한 어플리케이션을 구성하고 설정할 수 있다.

- AOP(관점 지향 프로그래밍)을 위한 풍부한 지원을 한다.

- 느슨한 결합과 좋은 이식성으로 유지보수에 용이하다.

- MVC framework 및 RESTful web service framework 등을 제공함으로 효율적인 웹 어플리케이션 개발을 지원한다.




'spring framework' 카테고리의 다른 글

[Spring]메이븐(Maven)에 대해..그리고 컴파일과 빌드의 차이  (0) 2019.05.08
[EL/JSTL]JSTL이란?  (0) 2018.06.20
[EL/JSTL]EL이란?  (0) 2018.06.19

+ Recent posts