I T H

[스프링프로젝트연습 3] 스프링 기본설정(Java Confing/xml 공통) 본문

Spring Basic

[스프링프로젝트연습 3] 스프링 기본설정(Java Confing/xml 공통)

thdev 2024. 1. 22. 14:26
  • 스프링 프레임워크를 설정하는 방법에는 2가지 방법이 있음. xml 파일을 통한 설정과 Java Config를 통한 설정이다.
  • 신규 프로젝트를 진행하는 과정에서 스프링 버전 및 신규 기능을 적용하고자 스프링 버전은 5.xx 버전을 사용하고 xml설정이 아닌 Java Config를 통해 설정을 진행하고자 함.(가능하다면 추후에는 xml설정 방식과 비교할 예정)

해당 문서에서는 신규 메이븐 프로젝트를 생성한 이후 스프링 프레임워크 적용을 위한 기본 설정하는 방법에 대해 설명한다.

 

[스프링 프레임워크 사용 - pom.xml 설정 변경]

  • <Properties> 태그 아래에 사용할 라이브러리들의 버전 정보를 작성

-  java 버전 변경 : 1.8

- Spring 버전 변경 : 5.1.5

 

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java-version>1.8</java-version> <!-- JAVA Version -->
	<org.springframework-version>5.1.5.RELEASE</org.springframework-version> <!-- Spring Version -->
	<org.aspectj-version>1.9.0</org.aspectj-version> <!-- AOP -->
	<org.slf4j-version>1.7.25</org.slf4j-version> <!-- log -->
	<javax.servlet-api-version>3.1.0</javax.servlet-api-version> <!-- Servlet Version -->
	<javax.servlet.jsp-version>2.3.3</javax.servlet.jsp-version> <!-- jsp Version -->
	<javax.servlet.jsp.jstl-version>1.2</javax.servlet.jsp.jstl-version> <!-- jstl Version -->
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

 

  • Properties 태그 아래에 존재하는 내용들은 특정 라이브러리들의 버전을 기입해놓는 변수와 같은 의미                       ex) <javax.servlet-api-version>태그의 <javax.servlet-api-version> 변수명 아래와 같이 사용하는 방식이다.
  • Dependencies 태그 아래에 실제 사용할 라이브러리 참조(라이브러리 의존성 주입)를 작성

-  properties에 변수를 지정하고 지정된 변수를 dependencies 태그에 실제 다운로드 받을 라이브러리에 적용하는 방식 or <Dependencies>의 <version>에 변수명을 사용하지 않고 직접 버전 정보를 입력하기도 함.

<dependencies>
	<!-- 아래 부분에 내용 추가 -->
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>javax.servlet-api</artifactId>
		<version>${javax.servlet-api-version}</version>
		<scope>provided</scope>
	</dependency>
	
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>jstl</artifactId>
		<version>${javax.servlet.jsp.jstl-version}</version>
	</dependency>
	
	<dependency>
		<groupId>javax.servlet.jsp</groupId>
		<artifactId>javax.servlet.jsp-api</artifactId>
		<version>${javax.servlet.jsp-version}</version>
		<scope>provided</scope>
	</dependency>

	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-webmvc</artifactId>
		<version>${org.springframework-version}</version>
	</dependency>

	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.11</version>
		<scope>test</scope>
	</dependency>
</dependencies>

 

  • 웹 기반의 요청 및 응답에 대한 일련의 과정을 구축하기 위한 서블릿 담당 라이브러리 3개 (위 3개) 스프링 MVC 패턴 적용을 위한 라이브러리 1개를 적용하였음.

사이트 인용 > Spring webmvc에는  애플리케이션을 위한 Spring MVC(모델--컨트롤러)  REST  서비스 구현이 포함되어 있습니다도메인 모델 코드와  양식을 명확하게 분리하고 Spring Framework 다른 모든 기능과 통합합니다.

[ 참고  메이븐 라이브러리 최신 버전 확인 및 pom.xml 적용태그 복사할 사이트 ]

라이브러리 참고 사이트
Javax.servlet-api https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api
jstl https://mvnrepository.com/artifact/javax.servlet/jstl
javax.servlet.jsp-api https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api
Spring-webmvc https://mvnrepository.com/artifact/org.springframework/spring-webmvc
junit https://mvnrepository.com/artifact/junit/junit

 

위에 적용한 라이브러리들은 스프링 기반의 웹 어플리케이션을 구축하는데 기본으로 필요한 라이브러리들로 대체적으로 스프링 구축 가이드(교재) 및 인터넷 검색을 통해 찾을 수 있다.

키워드를 통해 키워드 maven” / “키워드 pom.xml” 등의 검색을 통해 각 라이브러리 설정 태그를 검색하여 복사 붙여넣기 하는 것이 대부분이다.

 

기본적인 설정을 완료한 이후

부가적으로 사용할 라이브러리들의 의존성을 주입하여 준다.(Dependencies에 추가)

아래에 설정하지 않은 라이브러리들은 프로젝트를 진행하는 과정 중 건별로 추가하는 방식으로 진행하고자함.

추가로 사용될 라이브러리를 정리하면 다음과 같다.

 

 DB연동 라이브러리 : mysql, oracle 등 사용하는 데이터베이스 연결용

 JSON 관련 라이브러리 : 데이터를 주고받을 때 json 형태로 데이터를 전달하기 위함

 LOG 관련 라이브러리 : 쿼리 로그  시스템 로그 출력을 위한 라이브러리

 AOP 관련 라이브러리

-  Spring tester 관련 라이브러리

 

아래 설정된 라이브러리는 웹 어플리케이션을 구축할 때 사용될 기본 라이브러리 + 부가적인 라이브러리로 현 시점에는 사용하지 않더라도 라이브러리 적용을 해 두어 추후 사용하는 것으로 진행하고자 한다.

<dependencies>
		<!-- 아래 부분에 내용 추가 -->
		<!-- 서블릿 관련 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>${javax.servlet-api-version}</version>
			<scope>provided</scope>
		</dependency>
		
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>${javax.servlet.jsp.jstl-version}</version>
		</dependency>
		
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>javax.servlet.jsp-api</artifactId>
			<version>${javax.servlet.jsp-version}</version>
			<scope>provided</scope>
		</dependency>

		<!-- spring -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
		
		<!-- spring tester -->
		<dependency> 
			<groupId>org.springframework</groupId> 
		  	<artifactId>spring-test</artifactId> 
		  	<version>${org.springframework-version}</version> 
		</dependency>
		
		<!-- AspectJ (AOP) -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>${org.aspectj-version}</version>
		</dependency>
		
		<dependency>
		    <groupId>org.aspectj</groupId>
		    <artifactId>aspectjweaver</artifactId>
		    <version>${org.aspectj-version}</version>
		</dependency>
		
		<!-- json -->
		<dependency>
		    <groupId>com.fasterxml.jackson.core</groupId>
		    <artifactId>jackson-databind</artifactId>
		    <version>2.9.4</version>
		</dependency>
		
		<dependency>
		    <groupId>com.fasterxml.jackson.dataformat</groupId>
		    <artifactId>jackson-dataformat-xml</artifactId>
		    <version>2.9.6</version>
		</dependency>
		
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.8.2</version>
		</dependency>

		<!-- junit tester -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.11</version>
			<scope>test</scope>
		</dependency>
	</dependencies>