Spring Framework를 사용하면 자바 코드 작성 부분을 줄일 수 있지만, 초기 프로젝트 세팅이 복잡하므로 충분한 연습이 필요할 수 있다.
Spring Framework의 사용 방법은 두 가지로 구분할 수 있다.
다음과 같은 아이콘을 눌러 Java EE 개발 모드로 변경해준다.
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 파일에는 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>
프로젝트명을 클릭하고 마우스 우클릭 -> New -> Package
생성된 Package 클릭하고 마우스 우클릭 -> New -> Class
객체를 생성하는 등 관련된 정보를 코드에 작성하지 않고 xml 파일에 작성할 것이다.
프로젝트명을 클릭하고 마우스 우클릭 -> New -> Package
생성된 Package 클릭하고 마우스 우클릭 -> New -> Others... -> XML File
생성된 beans.xml 파일을 선택하고 하단의 Source 탭을 클릭한다.
// 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 창에 아무것도 나타나지 않을 것이다.
Maven Repository로 이동하여 slf4j와 logback을 앞서 살펴본 방법과 같은 방법으로 추가해준다.
[참고] 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 창에 실행 로그를 확인할 수 있다.
v프로젝트명을 클릭하고 마우스 우클릭 -> New -> Package
생성된 Package 클릭하고 마우스 우클릭 -> New -> Interface
// HelloWorld.java
package kr.co.softcampus.beans;
public interface HelloWorld {
// 추상메소드
public void sayHello();
}
생성된 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
+\