일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 국가직
- 통영여행
- 성신여대맛집
- gradle
- 통영예쁜카페
- react
- 자바스크립트에러처리
- 파이썬
- 공무원
- 방이편백육분삼십
- 방이편백육분삼십성신여대
- 통영에어비앤비
- 성북구맛집
- springboot
- tomcat7
- 뚝섬역맛집
- 한남동맛집
- 한성대맛집
- 스페인여행
- 통영
- 퇴사후공무원
- 서울숲누룽지통닭구이
- ubuntu자바설치
- ELK
- JavaScript
- 꼴뚜기회
- 돈암동맛집
- 성신여대편백집
- 영화추천
- npm
- Today
- Total
코린이의 기록
[Spring] Spring 4 - Maven 프로젝트 생성 본문
※ 이 포스팅은 "초보웹 개발자를 위한 스프링4 프로그래밍 입문" 책을 기반으로 작성하였습니다.
0. Prerequisite
- JDK : Java6 이상
- Maven or Gradle
- Java 개발 툴 : Eclipse or IntelliJ
나의 개발 환경(참고)
- JDK: 1.8.0_91
- Tomcat: apache-tomcat-7.0.79-windows-x64
- Maven: apache-maven-3.2.5-bin
- Eclipse Version: Mars.2 Release (4.5.2)
1. 메이븐 프로젝트 생성
메이븐(Maven)이란? - 자바 개발에 필요한 여러가지 라이브러리, 의존 모듈 등을 설치 및 관리해주는 Tool로서 apache 라이선스로 배포되는 오픈소스 소프트웨어이다. pom.xml이라는 파일에 프로젝트에 필요한 것들을 설정해두면 Maven 이 자동으로 다운로드 및 경로 지정까지 알아서 해준다. 참고: https://mvnrepository.com/ |
프로젝트 생성 기준 폴더를 생성한다.
ex.
C:\spring4/sp4-chap02/src/main/java
C:\spring4/sp4-chap02/src/main/resources
※ spring4/sp4-chap02 : 프로젝트 폴더
기준 경로에 프로젝트 폴더와 java 및 resources 폴더를 생성한 후에 pom.xml 이라는 XML 설정 파일을 spring4/sp4-chap02 프로젝트 폴더 아래에 생성한다.
1.1 메이븐 의존 설정 (pom.xml)
C:\spring4/sp4-chap02\pom.xml
line 7 ~ line 9 : 기본적으로 프로젝트에 대한 정보 (version, group ID, artifact ID 등) 과
line 11 ~ line 17 : 해당 프로젝트에서 의존하는 모듈과
line 19 ~ line 31 : 자바 컴파일러, 자바 버전(1.8)을 설정해주었다. utf-8 로 인코딩 설정을 해줌으로 써 자바 컴파일러가 코드를 읽을 때 UTF-8로 인코딩하여 읽는다.
이렇게 설정된 pom.xml을 maven이 읽어서 설정된 의존 파일들(dependnecy)을 다운로드 받는다. 결과적으로 위에서 설정한 "spring-context-4.1.0.RELEASE.jar" 파일을 다운로드 받게 된다.
1.2 메이븐 Repository
pom.xml에서 설정한 의존 모듈들은 메이븐 Repository에 저장되는데, 이 메이븐 repository는 원격 repository와 로컬 repository가 있다. 즉, 메이븐은 로컬 repository에 해당 파일이 있는지 확인 후 있으면 해당 파일을 사용하고, 없으면 원격 중앙 repository에서 해당 파일을 다운로드 받아 로컬 repository에 복사하여 사용한다.
원격 repository :http://repo.maven.apache.org
로컬 repository(Default) :C:\[사용자홈폴더]\.m2\repository
ex. spring-context 4.1.0 은 아래 repository에 다운로드 된다.
C:\[사용자홈폴더]\.m2\repository\org\springframework\spring-context
로컬 repository를 확인하려면?
Windows -> Preferences -> Maven -> User Settings에서 Local Repository를 확인할 수 있다.
2. 메이븐 프로젝트 Import
Project Explorer에서 우측 마우스 클릭 -> import -> import 클릭
프로젝트를 생성하면 위와 같은 프로젝트 구조를 확인할 수 있다.
Maven Dependencies : pom.xml에 설정된 artifact가 이클립스 프로젝트의 클래스 패스로 잡혀있음을 확인할 수 있다.
의존의 전이 Q. pom.xml에 설정한 의존 artifact는 spring-context하나인데 왜 여러개의 .jar가 생긴걸까? A. 이유는 의존성이 전이 되었기 때문이다. spring-context가 의존하고 있는 다른 artifact가 있기 때문에 spring-context를 사용하기 위하여 이것이 의존하고 있는 다른 artifact까지 다운로드 하기 때문이다. spring-context는 spring-aop, spring-beans, spring-core, spring-expression를 의존하고 있으며 spring-core는 commons-loggin을, spring-aop는 aopalliance를 의존하고 있다. |
3. 예제 코드 작성
3.1 파일 생성
아래 Main.java, Greeter.java 파일과 applicationContext.xml 설정파일을 생성한다.
- sp4-chap02/src/main/java/Main.java : main() 메소드를 통해서 spring과 Greeter 메소드를 실행하는 클래스
- sp4-chap02/src/main/java/Greeter.java : 콘솔에 메시지를 출력하는 클래스
- sp4-chap02/src/main/resource/applicationContext.xml : 스프링 설정 파일
프로젝트 마우스 우측 클릭 -> new -> class (혹은 other -> class)
chap02 패키지를 새성하고 Class이름을 설정해준다.
같은 방법으로 main.java를 생성한다.
다음은 Resource폴더에서 applicationContext.xml 파일을 생성한다.
resources폴더 오른쪽 마우스 우측 -> new -> other -> XML File
3.2 코드 작성
Greeter.java
line 7: greet() 메소드 : guest변수의 string을 받아서 새로운 format의 string을 return 하는 메소드이다. 여기서 format은 setFormat 메소드에서 설정한다.
line 11: setFormat() 메소드 : private String으로 정의한 format 변수를 set하는 메소드이다. greet 메소드에서 사용할 문자열 포멧이다.
applicationContext.xml
line 8 ~ line 10: 한 개의 객체를 생성하고 초기화 한다. 여기서 Bean은 스프링이 생성하는 객체를 의미한다.
- id: Bean을 구분하는 식별자
- class: Bean 객체 생성 시 사용할 클래스
- property: 스프링은 property tag의 name속성에 이름에서 앞글자를 대문자로 바꾼 후 set 메소드를 사용한다. 즉 name="format"으로 설정되어 있는데, Format으로 바꾼 후 setFormat 메소드를 사용한다.
위 스프링 설정 값을 자바 코드로 바꾸면 아래와 같다.
Greeter greeter = new Greeter();
greeter.setFormat("%s, 안녕하세요!");
Main.java
line 3: GenericXmlApplicationContext를 import 하는 이유는 XML파일로부터 설정 정보를 읽어와 빈 객체를 생성하고 관리하는 기능을 제공하기 위함이다.
line 8: GenericXmlApplicationContext 객체를 생성하여 이전에 설정한 applicationContext.xml 파일 경로를 지정해준다. 이는 applicationContext.xml에서 설정한 bean 설정을 읽어서 내부적으로 Greeter 객체를 생성하고 초기화하기 위함이다.
line 9: getBean 메소드는 "greeter"라는 이름의 식별자를 가진, 그리고 Greeter.class 타입의 객체를 찾는다. 스프링 설정 파일(applicationContext.xml)에서 id="greeter"이고 class="chap02.Greeter"를 설정했다. 해당 bean 객체를 찾아서 생성한다.
line 10: line9에서 객체를 찾았으니, 해당 객체의 메소드 greet()를 실행한다. 그리고 그 메소드의 파라미터로 "스프링"이라는 string 값을 넘겨주고 있다. 다시한번 더 설명하면 greet 메소드에서는 string 파라미터를 받아서 특정 포맷으로 바꾼 string을 리턴해주는데, 그 포맷은 "%s 안녕하세요!"였다.
즉 String.format("%s, 안녕하세요!", "스프링"); 이 된다.
3.3 실행 결과
프로젝트 우측 클릭 -> Run As -> Java Application
4월 12, 2018 8:45:22 오후 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 정보: Loading XML bean definitions from class path resource [applicationContext.xml] 4월 12, 2018 8:45:22 오후 org.springframework.context.support.GenericXmlApplicationContext prepareRefresh 정보: Refreshing org.springframework.context.support.GenericXmlApplicationContext@79fc0f2f: startup date [Thu Apr 12 20:45:22 KST 2018]; root of context hierarchy 스프링, 안녕하세요! 4월 12, 2018 8:45:23 오후 org.springframework.context.support.GenericXmlApplicationContext doClose 정보: Closing org.springframework.context.support.GenericXmlApplicationContext@79fc0f2f: startup date [Thu Apr 12 20:45:22 KST 2018]; root of context hierarchy |
개인적으로 궁금했던 것들
- .java 파일 생성시 패키지를 지정해주어야하는 이유?
- 왜 직접 클래스를 사용하여 객체를 생성하지 않고 spring 설정(applicationContext.xml)에서 bean으로 설정하는지?
'Framework > Spring' 카테고리의 다른 글
[Spring] Spring 4 - 스프링 AOP(Aspect Oriented Programming) 구현 (0) | 2018.05.03 |
---|---|
[Spring] Spring 4 - 의존 자동 주입 (0) | 2018.05.03 |
[Spring] Spring 4 - 스프링 DI와 예제 프로젝트 (0) | 2018.05.03 |
[Spring Boot] Spring Boot 시작하기 (0) | 2018.05.03 |
[Spring Boot] SSO(Single Sign On), Scalable Authentication Example with JSON Web Token (JWT) and Spring Boot (0) | 2018.05.03 |