소개
이 프로젝트에서는 Inversion of Control (IoC, 제어의 역전) 디자인 패턴과 Spring 프레임워크를 사용하여 간단한 중국어 - 영어 메시지 전환 시스템을 구현하는 방법을 배우게 됩니다.
👀 미리보기
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.labex.TestGreeting
你好, Labex
Hello, Labex
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.056 s - in com.labex.TestGreeting
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.295 s
[INFO] Finished at: 2024-05-10T12:05:55Z
[INFO] ------------------------------------------------------------------------
🎯 과제
이 프로젝트에서는 다음을 배우게 됩니다:
doMessage()추상 메서드를 가진IMessage인터페이스를 생성하는 방법IMessage인터페이스를MessageCN및MessageEN두 개의 구체 클래스에서 구현하는 방법applicationContext.xml파일을 사용하여 메시지 빈을 구성하는 방법TestGreeting클래스에서 메시지 전환 기능을 테스트하는 방법
🏆 성과
이 프로젝트를 완료하면 다음을 수행할 수 있습니다:
- IoC 디자인 패턴을 사용하여 메시지 기능의 구현을 주 애플리케이션에서 분리합니다.
- Spring 프레임워크를 사용하여 메시지 빈을 구성하고 관리합니다.
- 단위 테스트를 작성하여 메시지 전환 시스템의 기능을 검증합니다.
IMessage 인터페이스 생성
이 단계에서는 반환 값이 없는 doMessage()라는 추상 메서드를 포함하는 IMessage 인터페이스를 생성합니다.
com.labex패키지에IMessage.java라는 새 Java 파일을 생성합니다.- 파일 내에서 다음 코드를 사용하여
IMessage인터페이스를 정의합니다.
package com.labex;
// 메시지 기능을 위한 인터페이스
public interface IMessage {
// 메시지 표시를 위한 메서드 시그니처
void doMessage();
}
이 인터페이스는 메시지 기능을 구현하려는 모든 클래스에 대한 기본 구조를 정의합니다. doMessage() 메서드는 구체적인 메시지 클래스에서 구현될 추상 메서드입니다.
MessageCN 클래스 생성
이 단계에서는 IMessage 인터페이스를 구현하는 MessageCN 클래스를 생성합니다. 이 클래스는 msg 속성을 가지며 get/set 메서드를 제공합니다. 또한 doMessage() 메서드를 재정의하여 문자열 "你好,Labex"를 출력합니다.
com.labex패키지에MessageCN.java라는 새 Java 파일을 생성합니다.- 파일 내에서 다음 코드를 사용하여
MessageCN클래스를 정의합니다.
package com.labex;
// 중국어 메시지를 위한 IMessage 인터페이스 구현
public class MessageCN implements IMessage {
private String msg; // 메시지를 저장하는 변수
// 메시지를 검색하기 위한 getter 메서드
public String getMsg() {
return msg;
}
// 메시지를 설정하기 위한 setter 메서드
public void setMsg(String msg) {
this.msg = msg;
}
// IMessage 인터페이스의 doMessage 메서드 구현
@Override
public void doMessage() {
// 중국어로 인사 메시지 출력
System.out.println("你好," + msg);
}
}
MessageCN 클래스는 IMessage 인터페이스를 구현하고 중국어로 인사 메시지를 출력하는 doMessage() 메서드의 구현을 제공합니다.
MessageEN 클래스 생성
이 단계에서는 IMessage 인터페이스를 구현하는 MessageEN 클래스를 생성합니다. 이 클래스는 msg 속성을 가지며 get/set 메서드를 제공합니다. 또한 doMessage() 메서드를 재정의하여 문자열 "hello,Labex"를 출력합니다.
com.labex패키지에MessageEN.java라는 새 Java 파일을 생성합니다.- 파일 내에서 다음 코드를 사용하여
MessageEN클래스를 정의합니다.
package com.labex;
// 영어 메시지를 위한 IMessage 인터페이스 구현
public class MessageEN implements IMessage {
private String msg; // 메시지를 저장하는 변수
// 메시지를 검색하기 위한 getter 메서드
public String getMsg() {
return msg;
}
// 메시지를 설정하기 위한 setter 메서드
public void setMsg(String msg) {
this.msg = msg;
}
// IMessage 인터페이스의 doMessage 메서드 구현
@Override
public void doMessage() {
// 영어로 인사 메시지 출력
System.out.println("Hello, " + msg);
}
}
MessageEN 클래스는 IMessage 인터페이스를 구현하고 영어로 인사 메시지를 출력하는 doMessage() 메서드의 구현을 제공합니다.
applicationContext.xml 설정 파일 생성
이 단계에서는 위에서 생성한 JavaBeans를 구성하고 구성에서 msg 속성 정보를 전달하기 위해 applicationContext.xml 구성 파일을 생성합니다.
src/main/resources디렉토리에applicationContext.xml이라는 새 파일을 생성합니다.- 파일 내에 다음 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="messageCN" class="com.labex.MessageCN">
<!-- MessageCN 빈의 'msg' 속성을 "Labex"로 설정 -->
<property name="msg" value="Labex"/>
</bean>
<!-- 영어 메시지 빈에 대한 구성 -->
<bean id="messageEN" class="com.labex.MessageEN">
<!-- MessageEN 빈의 'msg' 속성을 "Labex"로 설정 -->
<property name="msg" value="Labex"/>
</bean>
</beans>
이 구성 파일은 MessageCN 및 MessageEN 빈을 설정하고 해당 msg 속성을 "Labex" 값으로 초기화합니다.
TestGreeting 클래스 생성
이 단계에서는 TestGreeting 클래스를 생성하고 테스트 작업을 수행하기 위해 testGreeting()이라는 테스트 메서드를 추가합니다.
com.labex패키지에TestGreeting.java라는 새 Java 파일을 생성합니다.- 파일 내에서 다음 코드를 사용하여
TestGreeting클래스를 정의합니다.
package com.labex;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestGreeting {
@Test
public void testGreeting() {
// XML 구성 파일에서 Spring 애플리케이션 컨텍스트 로드
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// 컨텍스트에서 메시지 빈 검색
IMessage messageCN = (IMessage) context.getBean("messageCN"); // 중국어 메시지 빈
IMessage messageEN = (IMessage) context.getBean("messageEN"); // 영어 메시지 빈
// 중국어 메시지 빈에서 'doMessage' 메서드 호출
messageCN.doMessage();
// 영어 메시지 빈에서 'doMessage' 메서드 호출
messageEN.doMessage();
context.close();
}
}
TestGreeting 클래스는 applicationContext.xml 파일에서 Spring 애플리케이션 컨텍스트를 로드하고, MessageCN 및 MessageEN 빈을 검색한 다음, 해당 doMessage() 메서드를 호출하여 기능을 테스트합니다.
이제 IoC 를 통한 중국어 - 영어 정보 전환 프로젝트를 생성하기 위한 모든 단계를 완료했습니다. 이제 테스트를 실행하고 예상 출력을 확인할 수 있습니다.
- 테스트 실행:
cd ~/project/SpringGreeting/
mvn test
테스트는 통과해야 하며 다음과 같은 출력을 볼 수 있습니다.
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.labex.TestGreeting
你好,Labex
Hello, Labex
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.056 s - in com.labex.TestGreeting
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.295 s
[INFO] Finished at: 2024-05-10T12:05:55Z
[INFO] ------------------------------------------------------------------------
요약
축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



