Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[라빈] 4단계 - HTTP 웹 서버 리팩터링 미션 제출합니다. #219

Open
wants to merge 4 commits into
base: giantim
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,8 @@ bin/
.idea
*.iws
*.iml
*.ipr
*.ipr
/client/build/
/client/out/
/was/build/
/was/out/
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,9 @@ WAS 기능 요구사항
-[x] getAttribute(String name) 구현
-[x] removeAttribute(String name) 구현
-[x] invalidate() 구현

멀티 모듈 적용

-[x] gradle의 멀티 모듈 개념을 적용해 프로젝트를 분리한다.
-[x] web-server / 사용자 관리 응용 어플리케이션을 서로 다른 프로젝트로 분리한다.

38 changes: 17 additions & 21 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,25 +1,21 @@
plugins {
id 'java'
id 'idea'
id 'eclipse'
}
subprojects {
group 'com.example'
version '1.0'

version = '1.0.0'
sourceCompatibility = 1.8
apply plugin: 'java'

repositories {
mavenCentral()
}
sourceCompatibility = 1.8

dependencies {
implementation 'com.google.guava:guava:29.0-jre'
implementation 'ch.qos.logback:logback-classic:1.2.3'
implementation 'com.github.jknack:handlebars:4.2.0'
implementation 'org.springframework:spring-core:5.2.6.RELEASE'
testImplementation 'org.junit.jupiter:junit-jupiter:5.6.2'
testImplementation 'org.assertj:assertj-core:3.16.1'
}
repositories {
mavenCentral()
}

test {
useJUnitPlatform()
}
dependencies {
testCompile 'org.junit.jupiter:junit-jupiter:5.6.2'
testCompile 'org.assertj:assertj-core:3.16.1'
}

test {
useJUnitPlatform()
}
}
3 changes: 3 additions & 0 deletions client/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
dependencies {
compile project(":was")
}
22 changes: 22 additions & 0 deletions client/src/main/java/client/ClientApplication.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package client;

import client.controller.*;
import was.webserver.WebServer;
import was.webserver.controller.Controller;

import java.util.Arrays;
import java.util.List;

public class ClientApplication {
public static void main(String[] args) throws Exception {
List<Controller> controllers = Arrays.asList(
new IndexController(),
new ResourceController(),
new UserCreateController(),
new UserListController(),
new UserLoginController()
);

WebServer.main(args, controllers);
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package webserver.controller;
package client.controller;

import webserver.http.request.HttpRequest;
import webserver.http.response.HttpResponse;
import was.webserver.controller.AbstractController;
import was.webserver.http.request.HttpRequest;
import was.webserver.http.response.HttpResponse;

import java.io.IOException;
import java.net.URISyntaxException;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package webserver.controller;
package client.controller;

import webserver.http.URL;
import webserver.http.request.HttpRequest;
import webserver.http.response.HttpResponse;
import was.webserver.controller.AbstractController;
import was.webserver.http.URL;
import was.webserver.http.request.HttpRequest;
import was.webserver.http.response.HttpResponse;

import java.io.IOException;
import java.net.URISyntaxException;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package webserver.controller;

import model.UserService;
import webserver.http.Parameters;
import webserver.http.URL;
import webserver.http.request.HttpRequest;
import webserver.http.response.HttpResponse;
package client.controller;

import client.model.UserService;
import was.webserver.controller.AbstractController;
import was.webserver.http.Parameters;
import was.webserver.http.URL;
import was.webserver.http.request.HttpRequest;
import was.webserver.http.response.HttpResponse;

import java.io.IOException;
import java.net.URISyntaxException;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package webserver.controller;
package client.controller;

import db.DataBase;
import utils.TemplateFactory;
import webserver.http.request.HttpRequest;
import webserver.http.response.HttpResponse;
import webserver.http.session.HttpSessionStorage;
import client.db.DataBase;
import was.utils.TemplateFactory;
import was.webserver.controller.AbstractController;
import was.webserver.http.request.HttpRequest;
import was.webserver.http.response.HttpResponse;
import was.webserver.http.session.HttpSessionStorage;

import java.io.IOException;
import java.util.Collections;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package webserver.controller;
package client.controller;

import db.DataBase;
import model.User;
import webserver.http.Parameters;
import webserver.http.request.HttpRequest;
import webserver.http.response.HttpResponse;
import webserver.http.session.HttpSession;
import webserver.http.session.HttpSessionStorage;
import client.db.DataBase;
import client.model.User;
import was.webserver.controller.AbstractController;
import was.webserver.http.Parameters;
import was.webserver.http.request.HttpRequest;
import was.webserver.http.response.HttpResponse;
import was.webserver.http.session.HttpSession;
import was.webserver.http.session.HttpSessionStorage;

import java.io.IOException;
import java.util.Collections;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package db;
package client.db;

import client.model.User;
import com.google.common.collect.Maps;
import model.User;

import java.util.Collection;
import java.util.Map;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package model;
package client.model;

public class User {
private String userId;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package model;
package client.model;

import db.DataBase;
import client.db.DataBase;

import java.util.Map;

Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -94,11 +94,13 @@ <h2 class="qna-title">InitializingBean implements afterPropertiesSet() 호출되
</div>
</div>
<div class="article-doc">
<p>A 에 의존성을 가지는 B라는 클래스가 있습니다.</p><p>B라는 클래스는 InitializingBean 을 상속하고 afterPropertiesSet을 구현하고 있습니다.
서버가 가동되면서 bean들이 초기화되는 시점에 B라는 클래스의 afterPropertiesSet 메소드는</p><p>A라는 클래스의 특정 메소드인 afunc()를 호출하고 있습니다.</p>
<p>A 에 의존성을 가지는 B라는 클래스가 있습니다.</p>
<p>B라는 클래스는 InitializingBean 을 상속하고 afterPropertiesSet을 구현하고 있습니다.
서버가 가동되면서 bean들이 초기화되는 시점에 B라는 클래스의 afterPropertiesSet 메소드는</p>
<p>A라는 클래스의 특정 메소드인 afunc()를 호출하고 있습니다.</p>
</div>
<div class="article-utils">
<ul class="article-utils-list">
<div class="article-was.utils">
<ul class="article-was.utils-list">
<li>
<a class="link-modify-article" href="/questions/423/form">수정</a>
</li>
Expand Down Expand Up @@ -135,13 +137,14 @@ <h2 class="qna-title">InitializingBean implements afterPropertiesSet() 호출되
<div class="article-doc comment-doc">
<p>이 글만으로는 원인 파악하기 힘들겠다. 소스 코드와 설정을 단순화해서 공유해 주면 같이 디버깅해줄 수도 있겠다.</p>
</div>
<div class="article-utils">
<ul class="article-utils-list">
<div class="article-was.utils">
<ul class="article-was.utils-list">
<li>
<a class="link-modify-article" href="/questions/413/answers/1405/form">수정</a>
</li>
<li>
<form class="delete-answer-form" action="/questions/413/answers/1405" method="POST">
<form class="delete-answer-form" action="/questions/413/answers/1405"
method="POST">
<input type="hidden" name="_method" value="DELETE">
<button type="submit" class="delete-answer-button">삭제</button>
</form>
Expand All @@ -164,13 +167,14 @@ <h2 class="qna-title">InitializingBean implements afterPropertiesSet() 호출되
<div class="article-doc comment-doc">
<p>이 글만으로는 원인 파악하기 힘들겠다. 소스 코드와 설정을 단순화해서 공유해 주면 같이 디버깅해줄 수도 있겠다.</p>
</div>
<div class="article-utils">
<ul class="article-utils-list">
<div class="article-was.utils">
<ul class="article-was.utils-list">
<li>
<a class="link-modify-article" href="/questions/413/answers/1405/form">수정</a>
</li>
<li>
<form class="delete-answer-form" action="/questions/413/answers/1405" method="POST">
<form class="delete-answer-form" action="/questions/413/answers/1405"
method="POST">
<input type="hidden" name="_method" value="DELETE">
<button type="submit" class="delete-answer-button">삭제</button>
</form>
Expand All @@ -197,28 +201,28 @@ <h2 class="qna-title">InitializingBean implements afterPropertiesSet() 호출되
<article class="article">
<div class="article-header">
<div class="article-header-thumb">
<img src="https://graph.facebook.com/v2.3/1324855987/picture" class="article-author-thumb" alt="">
</div>
<div class="article-header-text">
<a href="#" class="article-author-name">{0}</a>
<div class="article-header-time">{1}</div>
</div>
</div>
<div class="article-doc comment-doc">
{2}
</div>
<div class="article-utils">
<ul class="article-utils-list">
<li>
<a class="link-modify-article" href="/api/questions/{3}/answers/{4}/form">수정</a>
</li>
<li>
<form class="delete-answer-form" action="/api/questions/{3}/answers/{4}" method="POST">
<input type="hidden" name="_method" value="DELETE">
<button type="submit" class="delete-answer-button">삭제</button>
</form>
</li>
</ul>
<img src="https://graph.facebook.com/v2.3/1324855987/picture" class="article-author-thumb" alt="">
</div>
<div class="article-header-text">
<a href="#" class="article-author-name">{0}</a>
<div class="article-header-time">{1}</div>
</div>
</div>
<div class="article-doc comment-doc">
{2}
</div>
<div class="article-was.utils">
<ul class="article-was.utils-list">
<li>
<a class="link-modify-article" href="/api/questions/{3}/answers/{4}/form">수정</a>
</li>
<li>
<form class="delete-answer-form" action="/api/questions/{3}/answers/{4}" method="POST">
<input type="hidden" name="_method" value="DELETE">
<button type="submit" class="delete-answer-button">삭제</button>
</form>
</li>
</ul>
</div>
</article>
</script>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package model;
package client.model;

import db.DataBase;
import client.db.DataBase;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package model;
package client.model;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
Expand Down
Empty file modified gradlew
100644 → 100755
Empty file.
3 changes: 3 additions & 0 deletions settings.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
include 'was'
include 'client'

32 changes: 0 additions & 32 deletions src/main/java/webserver/HandlerMapper.java

This file was deleted.

28 changes: 0 additions & 28 deletions src/test/java/utils/HandlebarsTest.java

This file was deleted.

Loading