본문 바로가기
Programming/Spring

[Spring] Spring을 시작하기(Chapter 2)

 

 

* 이 포스팅은예제 코드를 생략한다. 

* 예제 코드는 https://github.com/seoeunhyo/Spring

 

seoeunhyo/Spring

스프링 프로그래밍 개인 공부 . Contribute to seoeunhyo/Spring development by creating an account on GitHub.

github.com

* 최범균의 스프링5 프로그래밍 도서를 참고했다. 

 


 

먼저 아래와 같이 폴더 구조를 만든다. 

 

 

pom.xml에 해당 내용을 입력한다. 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
		http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>sp5</groupId>
	<artifactId>sp5-chap02</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>5.0.2.RELEASE</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.7.0</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>utf-8</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

 

<artifactId> : 프로젝트 식별자 지정, 프로젝트 폴더와 동일한 이름인 sp5-chap02. 

<dependencies> : 프로젝트에서 5.0.2 release 버전인 spring-context 모듈을 사용한다고 설정한다. 

<plugin> : 자바 소스를 컴파일하고 결과 클래스를 생성한다. 자바 컴파일러가 소스를 읽을 때 사용할 인코딩은 UTF-8로 설정한다. 

 

 

2. 메이븐 레포지터리

 

pom.xml은 메이븐 프로젝트에 대한 설정 정보를 관리하는 파일로서, 프로젝트에서 필요로 하는 의존 모듈이나 플러그인 등에 대한 설정을 담는다. 

 

	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>5.0.2.RELEASE</version>
		</dependency>
	</dependencies>

 

메이븐은 한개의 모듈을 아티팩트라는 단위로 관리한다. 위 설정은 spring-context라는 식별자를 가진 5.0.2 RELEASE 버전의 아티팩트에 대한 의존을 추가한 것이다. 

의존을 추가는 일반적인 자바 어플리케이션에서 클래스 패스에 spring-context 모듈을 추가한다는 것을 뜻한다. 

각 아티팩트의 완전한 이름은 "아티팩트이름-버전.jar"이므로, 위 설정은 메이븐 프로젝트의 소스 코드를 컴파일하고 실행할 때 사용할 클래스 패스에 spring-context-5.0.2.RELEASE.jar 파일을 추가한다는 것을 의미한다. 

 

 

sp5-chap02로 이동해 cmd에서 mvn compile을 실행하면, 해당 메이픈 프로젝트를 인터넷에서 다운로드한다. 한번 다운로드하면 다시 다운로드 하지 않는다. 사용자/.m2/springframwork/org/spring-context에서 bat 파일을 확인할 수 있다. 

 

3. 의존전이

 

다운로드 받는 상태를 보면, spring-context 외에 여러가지를 다운 받는 모습을 볼 수 있다. 이 파일에는 컴파일을 수행하는데 필요한 메이븐 컴파일러 플러그인과 같이 메이븐과 관련된 파일이 포함된다. 의존한 아티팩트가 또다시 의존하고 있는 아티팩트가 있다면 그 아티팩트도 함께 다운로드 하는데, 이를 의존 전의라 한다. 서로가 의존하는 관계고 또 전의되는 관계다. 이렇게 의존 대상이 다시 의존하는 대상도 함께 다운로드한다. 

 

 

4. 메이븐 기본 폴더 구조 만들기

 

앞서 폴더 구조는 기본 폴더 구조이다. 이 폴더 구조는 메이븐에 정의되어 있는 기본 폴더 구조로서 java 폴더에는 자바 소스 코드가 위치한다. XML이나 다른 properties 파일과 같은 소스는 src\main\resources 폴더에 위치시키면 된다. 

 

웹 어플리케이션을 개발할 때에는 src\main\webapp 폴더를 웹 어플리케이션 기준 폴더로 사용하며, 이 폴터를 기준으로 JSP 소스 코드나 WEB-INF\web.xml 파일 등을 작성해서 넣는다. 

 

 

 

5. 메이븐 프로젝트 임포트

file - import에서 spring-chap02를 root 디렉토리로 정한다. 그 후 임포트 하면, 

 

이렇게 mvn compile을 실행했을 때 다운로드했던 jar 파일들이 의존 폴더에 들어있다. 

 

 

 

6. 스프링은 객체 컨테이너 

 

- BeanFactory 인터페이스가 가장 상단에 위치하며, 객체 생성과 검색에 대한 기능을 정의, 싱글톤/프로토타입 빈인지 확인하는 기능도 제공

- ApplicationContext 인터페이스는 메시지, 프로필/환경 변수 등을 처리할 수 있는 기능을 추가로 정의한다. 

- 어떤 구현 클래스를 사용하든, 각 구현 클래스는 설정 정보로부터 빈(Bean)이라고 불리는 객체를 생성하고 그 객체를 내부에 보관한다. 

- ApplicationContext 또는 BeanFactory는 빈 객체의 생성, 초기화, 보관, 제거 등을 관리하고 있어서 ApplicationContext를 컨테이너라고도 부른다. => 스프링 컨테이너 

 

7. 싱글톤 객체 

싱글톤은 단일 객체를 의미하는 단어로서 스프링은 기본적으로 한개의 @Bean 어노테이션에 대해 한 개의 빈 개체를 생성한다. 따라서 서로 다른 객체를 생성하고 싶다면, @Bean 어노테이션을 클래스에 정의해보자. 

 

'Programming > Spring' 카테고리의 다른 글

[JPA] QueryDSL  (1) 2024.06.19
[Spring] Spring DI (Chapter 3) - 1  (0) 2024.02.12
[Spring] Spring을 시작하기 위한 환경 설정(Chapter 1)  (0) 2024.02.03
[Spring] Transaction  (0) 2023.06.16
[Spring] MVC 구조  (0) 2023.06.16