Domain ν¨ν€μ§
- λ°μ΄ν° μμμ μ§μ νκΈ° μν΄ μ¬μ©νλ€.
- λ§€κ°λ³μλ‘μ¨ κ°μ μ λ¬ν λμ μ¬μ©νλ€.
ν¨ν€μ§ ꡬμ±
1. Result μΈν°νμ΄μ€
- Response μ λ§€κ°λ³μλ‘ λ겨μ§λ ν΄λμ€μ μ΅μμ μΈν°νμ΄μ€μ΄λ€.
String getResult(); λ©μλλ₯Ό μ μΈν΄, ꡬνμ κ°μ νλ€.
package main.src.Domain;
public interface Result {
public String getResult();
}
String getResult(); λ©μλμ μν μ, Response λ¬Έμμ΄μ μμ±νλ κ²μ΄λ€.
package main.src.Domain.User;
import main.src.Domain.Result;
public class UserDTO implements Result {
private Long userId;
private String nickname;
@Override
public String getResult() {
return String.format("userId:%s,nickname:%s", userId, nickname);
}
}
Config ν¨ν€μ§
- κΈ°λ³Έ ꡬμ±μ ν΄λΉνλ ν΄λμ€μ μ§ν©μ΄λ€.
1. Constant ν΄λμ€
- MySQL μ μ μ 보 (URL, User, Password λ±) λ₯Ό κ°μ§κ³ μλ€.
- μ€μν μ 보λ₯Ό ν¬ν¨νκ³ μκΈ° λλ¬Έμ,
.gitignoreμ λ±λ‘νλ€.
package main.config;
public class Constant {
public static final String mysqlUrl = "jdbc:mysql://localhost:3306/chatProtocol";
public static final String mysqlUser = "example";
public static final String mysqlPassword = "example";
}
2. CustomResponse ν΄λμ€
- Response λ¬Έμμ΄μ μμ±νλ ν΄λμ€μ΄λ€.
- νλλ
statusCode(ex: 200), isSuccess(ex: SUCCESS), result λ‘ κ΅¬μ±λμ΄ μλ€.
result λ Generic νμ
μ΄λ€.
- μ±κ³΅ / μ€ν¨ κ²°κ³Όλ₯Ό λμμ λ€λ£¬λ€.
String / Result / List<Result> νμ
μΌλ‘ λλλ€.
package main.config;
import main.src.Domain.Result;
import java.util.List;
public class CustomResponse<T> {
private String statusCode;
private String isSuccess;
private T result;
public CustomResponse(T result) {
this.statusCode = "200";
this.isSuccess = "SUCCESS";
this.result = result;
}
public CustomResponse(ResponseStatus status) {
this.statusCode = status.getStatusCode();
this.isSuccess = "FAIL";
this.result = (T) status.getMessage();
}
public String getResponse() {
String response = String.format("%s %s\t", statusCode, isSuccess);
if (result instanceof String) {
response += String.format("message:%s", result);
} else if (result instanceof List) {
for (Result result : (List<Result>) result) {
response += String.format("%s/", result.getResult());
}
response = response.substring(0, response.length() - 1);
} else if (result instanceof Result){
response += String.format("%s", ((Result) result).getResult());
}
return response;
}
}
3. ResponseStatus Enum ν΄λμ€
- μμΈ μνλ₯Ό κ΄λ¦¬νλ Enum ν΄λμ€
- κ° μμΈμ λ§κ², 컀μ€ν
μλ¬ λ©μΈμ§ / μλ¬ μ½λλ₯Ό λμ§ μ μλ€.
CustomResponseμ ResponseStatus κ°μ²΄λ₯Ό μ λ¬νλ©΄ μ€ν¨ κ²°κ³Όκ° μμ± λλ€.
package main.config;
public enum ResponseStatus {
ID_DUPLICATION("2001", "μμ΄λκ° μ€λ³΅λ©λλ€."),
USERS_NULL("2002", "μμ΄λ λλ λΉλ°λ²νΈκ° μλͺ»λμμ΅λλ€."),
ROOMS_NULL("2003", "ν΄λΉνλ λ°©μ΄ μμ΅λλ€."),
CHATS_NULL("2004", "μ±ν
μ΄ μμ΅λλ€."),
ALREADY_INVITED("2005", "μ΄λ―Έ μ΄λν μ¬λμ
λλ€."),
METHOD_ERROR("400", "μμ² λ©μλκ° μλͺ» λμμ΅λλ€."),
BODY_ERROR("400", "μμ²μ΄ μλͺ» λμμ΅λλ€."),
DB_ERROR("500", "DB μλ¬");
private final String statusCode;
private final String message;
private ResponseStatus(String statusCode, String message) {
this.statusCode = statusCode;
this.message = message;
}
public String getStatusCode() { return statusCode; }
public String getMessage() { return message; }
}
4. CustomException ν΄λμ€
- μμΈ μ²λ¦¬ μ, CustomException μ λμ§μΌλ‘μ¨ μμΈμ²λ¦¬λ₯Ό 컀μ€ν
νλ€.
- λλ²κΉ
λ° Error Response μ ν¨κ³Όμ μ΄λ€.
ResponseStatus λ₯Ό CustomResponseμ μ λ¬νλ μν μ μννλ€.
package main.config;
public class CustomException extends Exception {
private ResponseStatus status;
public CustomException(ResponseStatus status) {
this.status = status;
}
public ResponseStatus getStatus() {
return status;
}
}
π Github (Code Link)
ChatProgram