Spring Boot 해볼까..?

조만간 새로운 프로젝트를 시작하게 될 것 같은 느낌…

현재 PHP로 구성되어있는 서비스를…

내가 그래도 조금은 더 많이 해본 JAVA로 바꾸고 있었는데..

(Spring, MyBatis 조합..)

 

이번에 새로 프로젝트를 시작하게 될 것 같아서..

위처럼 사용했던 방법대로 진행하려 하였으나…

현재 회사에 오기전 면접때마다 들어봤던..

Spring Boot.. Spring Boot…

로 개발해보려고 한다.

그놈이 그놈이 아닌가 싶어.. 잠깐 찾아보니..

실질적으로 사용방법은 SpringFramework 와 동일한 것으로 보여진다.

Spring boot 내부도 결국은 SpringFramework 로 이루어져있으니까…

다만 항상 프로젝트를 시작할 때마다 했던 설정들을.. 조금 간편하게? 공통되게?

설정되어? 할 수 ? 있는 정도의 차이랄까…

 

SpringFramework 에서 설정을 잘 할 수 있다면..

굳이.. Spring boot를 써야되나.. 싶기도 하지만…

 

SpringFramework 를 사용하는 이유 역시… 초기 설정은 오래 걸리나..

이후 개발/유지보수 측면에서 편리함을 위함이므로…

 

이번 기회에.. Spring Boot 를 한번 시작해볼까 싶다..

쓰다보니… IT > JAVA 가 아니라 잡담이네…

0 글이 마음에 드셨다면 하트 꾸욱~

사용자 정의 예외처리(Custom Exception)

JAVA에서 발생 될 수 있는 다양한 예외처리..

값이 null 객체에 접근시 발생하는 NullPointException..

숫자가 아닌 문자를 숫자로 변환 시 발생하는 NumberFormatException 등..

JAVA에는 다양한 Exception(예외)이 정의되어있다.

또한 미리 정의된 메시지 역시 있지만..

사용자가 필요에 의해 예외를 정의 할 수 있다.

오류가 발생 한 경우 특정 메시지, 코드 등을 정의 하여 반환 하는 경우라 생각한다.

– 사용자 정의 클래스 생성

public class CustomException extends Exception {
	
	private static final long serialVersionUID = 1L;
	
	Exception exception;
	private String message;
	
	public CustomException(String message) {
		this.message = message;
	}
	
	public String getMessage() {
		if(message != null) {
			return message;
		}else {
			return exception.getMessage();
		}
	}
}

Exception.class 를 상속 받아 작성(message 뿐 아니라 코드, 객체 다양하게 추가하여 사용 가능..

 

– 사용하기..

try {
	TestVO testVO= testService.getTestInfo(key);
	ArrayList<TestVO> testList = testService.getTestList(testVO.getKey());
	
	request.setAttribute("testVO", testVO);
	request.setAttribute("testList", testList);
}catch (CustomException custom) {
	request.setAttribute("message", custom.getMessage());
	return ERROR_PAGE;
}catch (Exception e) {
	request.setAttribute("message", e.getMessage());
	return ERROR_PAGE;
}

위와 같이 작성하고 testVO가  null 이면 CustomException 에서

JAVA 기본 예외가 작동할 줄 알았다..

(Exception.class 상속 받았으니까…)

그러나 아무러 작동도 하지 않을 뿐더라..

생성자에 정의한 message 역시 설정 할 수 없다..

또한 아래와 같은 에러 메시지가 발생한다.

try 구문안에 CustomException 을 사용하는 경우가 없기 때문…

getTestInfo 메소드를 정의한 인터페이스에  throws CustomException을 추가

TestVO getTestInfo(String key) throws ErsException;

실제 서비스에서는 CustomException 을 발생시키고

생성자를 이용하여 오류 메시지를 작성한다.

@Override
public TestVO getTestInfo(String key) throws CustomException {
	TestVO testVO = testMapper.getTestInfo(key);
	if(testVO == null) {
		throw new CustomException("정보를 조회 할 수 없습니다.");
	}
	return testVO; 
}

try 구문 안에 해당 예외처리를 발생(throw new CustomException) 시켜줘야 한다.

 

Service 단에서 객체 null 여부를 체크하여 처리하는 방식..

또한

catch (CustomException custom) {
	request.setAttribute("message", custom.getMessage());
	return ERROR_PAGE;
}catch (Exception e) {
	request.setAttribute("message", e.getMessage());
	return ERROR_PAGE;
}

CustomException 에서 catch 할 수 없는 예외를 위해 JAVA 에서 제공하는

Exception 을 추가로 처리하여 발생 할 수 있는 예외를 처리하여 준다.

 

0 글이 마음에 드셨다면 하트 꾸욱~

request 에서 넘어온 parameter HashMap 으로 반환

별건 아니지만… 자주 사용하는 방법이라… 기록..

 

public String test(HttpServletRequest request){
	HashMap<String, String> pMap = getParam(request);
	return "test";
}

private HashMap<String, String> getParam(HttpServletRequest request){
	HashMap<String, String> rMap = new HashMap<String, String>();
	Enumeration e = request.getParameterNames();
	while ( e.hasMoreElements() ){
		String name = (String) e.nextElement();
		String[] values = request.getParameterValues(name);		
		for (String value : values) {
			rMap.put(name, value);
		}   
	}
	return rMap;
}
0 글이 마음에 드셨다면 하트 꾸욱~