본문 바로가기
programming/MakinGProJect

게시판 만들기 9 자바 스프링 프레임워크 템플릿 클래스 만들기 모델 컨트롤러 서비스 dao

by 개코 - 개발과 코딩 2021. 10. 21.

게시판 만들기 부분과 상관은 없지만 자바 스프링프레이워크로 게시판을 만들려면 어떻게 동작하는지 정도는 알고 있어야 한다. 동작되는 하나의 세트를 만들고 나면 나머지는 복사하기 붙여넣기 이다. 다만 세세한 것은 포스팅 진행을 하면서 조금씩 설명을 추가한다.

게시판 만들기 9
자바 스프링 프레임워크 클래스 만들기
컨트롤러 서비스 dao

스프링프레임워크의 동작은 컨트롤러 서비스 dao 의 순서대로 동작한다.

데이터는 모델이란 클래스 객체를 이용해 매핑하여 사용하거나 단순한 변수를 사용한다.

편하게 작성하려면 모델 클래스 객체를 이용하는 것이 편하다.

종류

스프링프레임워크를 동작을 위해 필요한 필요한 클래스 객체는 이전에 다루었다.

개념적인 것보다 이런 의미가 있구나 하는 정도이기 때문에 대충 읽고 넘어가도 상관없다.

스프링프레임워크 또한 방대하기 때문에 필요한 것만 익히고 나머지는 천천히 알아가면 된다.

파일구조를 보자.

아래의 형태로 클래스 객체를 만들 것이다.

파일 명명은 작업.숫자.서비스 형태를 가진다.

뒤에 붙인 Impl 은 interface 의 약자로 클래스에 필요한 메서드 등을 상속하고 관리한다.

즉, 필수적인 메서드를 작성하면 상속받는 클래스는 무조건 사용해야 한다.

이번에는 파일만 만들고 서로간의 연결은 하지 않을 것이다.

클래스별 연결은 다음으로 미루도록 한다.

분량도 많아지고 보는 사람도 지치고 본인도 지친다.

이 글을 왜 작성하는지에 대한 목적은 그저 잊어먹지 않으려는 복습 차원이기도 하다.

모델 만들기

모델을 데이터 집합체이다.

하나 만들어 놓으면 천천히 수정하면서 진행하면 된다.

데이터 형태는 object 형태를 가지고 있는 것이 편할 수 있다.

동일한 데이터 타입으로 추후에 데이터 가공시 필요한 대로 캐스팅하여 사용하는 것이 유연하기 때문이다.

대충 하나만 만들어 두자.

package com.crd.test.Template;

public class Template0Model {

	private Object dataObject; 
	
	public Template0Model() {}
	
	public Template0Model(String dataObject) {
		this.setDataObject(dataObject);
	}

	public Object getDataObject() {
		return dataObject;
	}

	public void setDataObject(Object dataObject) {
		this.dataObject = dataObject;
	}
}

클래스 생성자가 2개 있다.

파라미터가 없는 경우에도 클래스가 생성될 수 있지만 오류 방지를 위해 일삼아 넣은 것이다.

기본 생성자는 사용하지 않더라도 필수로 넣어두는 것이 좋다.

보험이라 생각하자. 

컨트롤러 만들기

컨트롤러는 웹페이지에서 url 을 이용한 최초 진입점이라고 이전에 언급했다.

이번엔 컨트롤러 코드를 하나만 넣어보자.

만약, 이 글을 보고 있는 분 중 컨트롤러 주입에러가 발생한다면 @Controller 부분과 import 부분을 잘 보도록 하자.

package com.crd.test.Template;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Handles requests for the application home page.
 */
@Controller
public class Template1Controller {
	
	private static final Logger logger = LoggerFactory.getLogger(Template1Controller.class);
	
	/**
	 * url 최초진입
	 */
	@RequestMapping(value = "/template", method = RequestMethod.GET)
	public String BoardList(Locale locale, Model model) {
		logger.info("Welcome home! The client locale is {}.", locale);
		
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
		
		String formattedDate = dateFormat.format(date);
		
		model.addAttribute("serverTime", formattedDate + " STS 실행 테스트");
		
		return "template/template";
	}
}

서비스 만들기

서비스는 컨트롤러에서 요청한 작업을 수행하고 결과값을 컨트롤러에 보내는 역할을 한다.

서비스 부분이 수행하는 작업은 데이터베이스 클래스에 작업을 요청하는 것일 수도 있고 컨트롤러에서 보내온 값을 별도로 처리할 수도 있다.

엄연히 개발자 마음이다.

서비스는 interface 를 사용하여 필수적인 작업을 하도록 강제하고 있기도 하다.

지금은 그냥 빈 깡통이다.

package com.crd.test.Template;

public interface Template2ServiceImpl {

}


package com.crd.test.Template;

public class Template2Service implements Template3DaoImpl {

}

dao 만들기

dao 는 서비스에서 작업을 요청받고 처리한 값을 다시 반환한다.

dao 는 데이터베이스에 직접 접근하여 값을 가져오거나 등록하고 삭제하는 기능을 하기도 한다.

여기서도 일단 빈깡통을 만들 것이다.

메서드에 대한 동작은 다음으로 미룬다.

package com.crd.test.Template;

public interface Template3DaoImpl {

}

package com.crd.test.Template;

public class Template3Dao implements Template3DaoImpl {

}

이제 남은 것은 서로 간의 클래스들을 연결하고 데이터를 전달하고 받고 처리하고 돌려주는 것만 남았다.

이 과정이 조금 길기 떄문에 포스팅도 길어진다.

이 부분들 때문에 자바 스프링프레임워크가 다른 웹언어에 비해 번거롭다고 느끼는 경우들이 있고, 적응하기 어려운 부분들이 있다.

 

반응형

댓글