[Spring] HelloWorld 애플리케이션 만들기 (1)

extory1004·2022년 2월 12일

SpringFramework

목록 보기
2/4

기존 HelloWorld

public class HelloWorld{
	public static void main(String[] args) {
    	System.out.println("Hello World!");
    }
}

위 helloWorld 애플리케이션은 확장성이 떨어집니다.다른 메세지를 출력하고 싶다면 어떻게 바꾸어야 할까요?그것은 외부에서 입력받아 출력하는것 입니다.

public class HelloWorldWithCommandLine {
	public static void main(String[] args) {
    	if (args.length > 0) {
        	System.out.println(args[0]);
        } else {
        	System.out.println("Hello World!");
        }
    }
}

이렇게 명령줄로 메세지를 입력 받으면 다른 메세지를 출력할 수 있습니다.하지만 더 유지보수가 쉽게 이번에는 메세지 출력 컴포넌트와 메세지 입력받는 컴포넌트로 분리하여 프로그래밍을 해봅시다.

메세지 획득 컴포넌트

public interface MessageProvider {
	String getMessage();
}

public class HelloWorldMessageProvider implements MessageProvider {
	@Override
    public String getMessage() {
    	return "Hello World!";
    }
}

메세지 출력 컴포넌트

public interface MessageRenderer {
	void render();
    void setMessageProvider(MessageProvider messageProvder);
    MessageProvider getMassageProvider();
}

public class StandardOutMessageRenderer implements MessageRenderer {
	private MessageProvider messageProvider;
    
    @Override
    public void render() {
    	if (messageProvider == null) {
        	throw RuntimeException(
            	"You must set the property messageProvider of class:" 
                + StandardOutMessageRenderer.class.getName());
        }
        System.out.println(messageProvider.getMessage());
    }
    
    @Override
    public void setMessageProvider(MessageProvider messageProvider) {
    	this.messageProvider = messageProvider;
	}
    
    @Override
    public MessageProvider getMassageProvider() {
    	return this.messageProvider;
    }
}

위와 같이 MessageProvider는 메세지 획득을 담당하고 MessageRenderer는 메세지 출력을 담당합니다. 이제 main() 메서드를 작성하면 됩니다.

public class HelloWorldDecoupled {
	public static void main(String[] args) {
    	MessageRenderer mr = new StandardOutMessageRenderer();
        MessageProvider mp = new HelloWorldMessageProvider();
        mr.setMessageProvider(mp);
        mr.render();
    }
}

이렇게 HelloWorld 애플리케이션의 유지보수가 쉬워졌고 유연해졌습니다.

profile
코딩하는 대학생

0개의 댓글