[Spring Framework] 스프링 프레임워크 사용하기

박은지·2022년 3월 3일
0

Spring Framework

목록 보기
2/3

Spring Framework

Spring Framework를 사용하면 자바 코드 작성 부분을 줄일 수 있지만, 초기 프로젝트 세팅이 복잡하므로 충분한 연습이 필요할 수 있다.

Spring Framework의 사용 방법은 두 가지로 구분할 수 있다.

  • XML
  • Java 어노테이션

Maven

  • 자바 프로젝트의 빌그를 자동으로 해주는 도구
  • 개발자가 xml에 작성한 프로젝트 정보를 토대로 컴파일하고 라이브러리를 연결하는 등의 작업을 해주는 도구
  • Maven 서버를 통해 라이브러리를 다운받아 설정하는 작업도 수행한다.

프로젝트 생성하기

다음과 같은 아이콘을 눌러 Java EE 개발 모드로 변경해준다.

Maven Project 생성

File -> New -> Maven Project
Create a simple project (skip archetype selection) 옵션 체크 후 Next 버튼 클릭

Gruop Id와 Artifact Id를 입력한 후 Finish 버튼 클릭

Group Id : 그룹 아이디
Artifact Id : 프로젝트 이름


-> 다음과 같은 우측 하단의 아이콘을 클릭하면 다운로드 진행 상황을 볼 수 있다.

Spring Framework는 Java 8 버전 이상을 권장하기 때문에 1.8 이상으로 맞춰주어야 한다.
SpringBasic -> 마우스 우클릭 -> Properties -> Project Facets -> Convert to facted form... -> Java 1.8으로 설정해준다. -> Apply and Close

pom.xml 작성

pom.xml 파일에는 Maven 프로젝트에 관련된 정보를 기술한다.

Spring Framework를 사용하기 위한 라이브러리 정보를 작성해주면 라이브러리가 자동으로 다운로드 되면서 해당 프로젝트에 세팅된다.

Spring Framework
링크로 이동하여 LEARN 메뉴로 이동하여 최신(current)버전을 확인한다.
현재 기준으로 최신 버전은 5.3.16 버전이다.

Maven Server에서 운영하고 있는 라이브러리 공식 서버가 있다.
아래의 링크는 Maven 프로젝트를 위한 라이브러리들을 검색해서 세팅할 수 있는 곳이다.
Maven Repository

Spring Context 를 검색하여 앞서 확인한 최신 버전을 클릭하여 코드를 복사하고, pom.xml파일의 <dependencies> 태그 안에 넣어준다.

<properties> 태그 안에는 현재 프로젝트에서 사용할 라이브러리 정보를 작성해준다.
아래의 코드에는 Java와 Spring 버전을 명시했고,
<dependencies> 태그 안의 Spring Context에 대한 version 태그 안에 <properties>에서 스프링 라이브러리 버전에 대한 태그명(org.springframework-version)을 넣어준다.
변수처럼 사용된다고 이해하면 쉬움

// pon.xml

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>kr.co.softcampus</groupId>
	<artifactId>SpringBasic</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	
	<!-- 현재 프로젝트에서 사용할 라이브러리 정보 -->
	<properties>
		<!-- 자바 버전 -->
		<java-version>1.8</java-version>
		<!-- 스프링 버전 -->
		<org.springframework-version>5.3.16</org.springframework-version>
	</properties>
  		<!-- 
		<org.springframework-version>4.3.25.RELEASE</org.springframework-version>
	</properties>
		-->

	<!-- Spring Context -->
	<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${org.springframework-version}</version> <!-- 위 properties메서 명시한 태그명 -->
		</dependency>
	</dependencies>

</project>

Main

Package 생성

프로젝트명을 클릭하고 마우스 우클릭 -> New -> Package

Class 생성

생성된 Package 클릭하고 마우스 우클릭 -> New -> Class

객체를 생성하는 등 관련된 정보를 코드에 작성하지 않고 xml 파일에 작성할 것이다.

config

Package 생성

프로젝트명을 클릭하고 마우스 우클릭 -> New -> Package

beans.xml 파일 생성

생성된 Package 클릭하고 마우스 우클릭 -> New -> Others... -> XML File


생성된 beans.xml 파일을 선택하고 하단의 Source 탭을 클릭한다.

beans.xml 파일 작성

// beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
						http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

// MainClassjava

package kr.co.softcampus;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainClass {

	public static void main(String[] args) {

		// beans.xml 파일을 로딩한다
		ClassPathXmlApplicationContext	ctx = new ClassPathXmlApplicationContext("kr/co/softcampus/config/beans.xml");
	
		ctx.close();

	}
}

위와 같이 작성한 후 MainClass를 실행시키면 console 창에 아무것도 나타나지 않을 것이다.

Spring 로그

Maven Repository로 이동하여 slf4jlogback을 앞서 살펴본 방법과 같은 방법으로 추가해준다.
[참고] alpha와 beta 버전을 제외한 가장 최신 버전을 선택

// pom.xml

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>kr.co.softcampus</groupId>
	<artifactId>SpringBasic</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	
	<!-- 현재 프로젝트에서 사용할 라이브러리 정보 : 보통 각 라이브러리의 Group Id를 태그명으로 많이 사용한다-->
	<properties>
		<!-- 자바 버전 -->
		<java-version>1.8</java-version>
		<!-- 스프링 버전 -->
		<org.springframework-version>5.3.16</org.springframework-version>
		<!-- slf4j -->
		<org.slf4j-version>1.7.36</org.slf4j-version>
		<ch.qos.logback-version>1.2.10</ch.qos.logback-version>
	</properties>

	
	<dependencies>
	    <!-- Spring Context -->
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${org.springframework-version}</version> <!-- 위 properties메서 명시한 태그명 -->
		</dependency>
		<!-- slf4j -->
		<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
		<dependency>
    		<groupId>org.slf4j</groupId>
    		<artifactId>slf4j-api</artifactId>
    		<version>${org.slf4j-version}</version>
		</dependency>
		<!-- logback-->
		<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
		<dependency>
    		<groupId>ch.qos.logback</groupId>
    		<artifactId>logback-classic</artifactId>
    		<version>${ch.qos.logback-version}</version>
    		<!-- slf4j에서 logback을 사용할 수 있도록 연결 -->
    		<exclusions>
    			<exclusion>
    				<groupId>org.slf4j</groupId>
    				<artifactId>slf4j-api</artifactId>
    			</exclusion>
    		</exclusions>
            <!-- 런타임(실행) 중에 로그 확인 가능 -->
    		<scope>runtime</scope>
		</dependency>
	</dependencies>

</project>

위와 같이 작성한 pom.xml 파일을 저장하면 slf4j와 logback에 대한 라이브러리들이 자동으로 생성된 것을 확인할 수 있다.


MainClass를 실행시키면 Console 창에 실행 로그를 확인할 수 있다.

bean

[ package 생성 ]

v프로젝트명을 클릭하고 마우스 우클릭 -> New -> Package

[ interface 생성 ]

생성된 Package 클릭하고 마우스 우클릭 -> New -> Interface

// HelloWorld.java

package kr.co.softcampus.beans;

public interface HelloWorld {

	// 추상메소드
	public void sayHello();
}

[ class 생성 ]

생성된 Package 클릭하고 마우스 우클릭 -> New -> Class

// HelloWorldEn.java

package kr.co.softcampus.beans;

public class HelloWorldEn implements HelloWorld {

	@Override
	public void sayHello() {
		System.out.println("Hi~~!");
	}
	
}

이전에는 MainClass에 HelloWorld 객체를 만들어 주었지만 이번에는 이 작업을 beans.xml 파일에 해 줄 것이다.
// beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
						http://www.springframework.org/schema/beans/spring-beans.xsd">
						
	<bean id='hello' class="kr.co.softcampus.beans.HelloWorldEn"></bean>
</beans>

class="객체를 만들 때 사용될 클래스의 경로" 이고,
이때, 사용하는 클래스가 하나가 아니라 여러 개일 경우를 대비해 id 속성을 부여하여 지칭한다.

이제 MainClass에 객체를 만들고 메소드를 호출해보자.

// MainClass.java

package kr.co.softcampus;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import kr.co.softcampus.beans.HelloWorld;

public class MainClass {

	public static void main(String[] args) {
		// beans.xml 파일을 로딩한다
		ClassPathXmlApplicationContext	ctx = new ClassPathXmlApplicationContext("kr/co/softcampus/config/beans.xml");
		
		/* 이전에는 MainClass에 HelloWorld 객체를 만들어 주었지만 
		 * 이번에는 이 작업을 beans.xml 파일에 해 줄 것이다. 
		 * --> [참고] bean.xml */
		
		// xml에 정의한 bean 객체의 주소값을 가져온다.
		// getBean 메소드 타입은 Object 타입이기 때문에 HelloWorld로 형변환을 해 준 것이다.
		// [방법 1]
		HelloWorld hello1 = (HelloWorld)ctx.getBean("hello");
		callMethod(hello1);
		// [방법 2]
		HelloWorld hello2 = ctx.getBean("hello", HelloWorld.class);
		callMethod(hello2);
		
		ctx.close();
	}
	
	public static void callMethod(HelloWorld hello) {
		hello.sayHello();
	}
}

HelloWorldEn 클래스에서 HelloWorldKo 클래스로 변경해야 하는 경우,
beans.xml의 class 속성 값만 변경해주면 된다.

// HelloWorldKo.java

package kr.co.softcampus.beans;

public class HelloWorldKo implements HelloWorld {
	
	@Override
	public void sayHello() {
		System.out.println("안녕하세요~!");
	}

}

// beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
						http://www.springframework.org/schema/beans/spring-beans.xsd">
                        
    <!-- <bean id='hello' class="kr.co.softcampus.beans.HelloWorldEn"></bean> -->
	<bean id='hello' class="kr.co.softcampus.beans.HelloWorldKo"></bean>
</beans>

💡 주석 ( Comment )

  • 주석 처리 : Ctrl + Shift + /
  • 주석 해지 : Ctrl + Shift + \

0개의 댓글