최대 1 분 소요

서비스 객체 분리하기

서비스 객체를 분리한다 (결합력을 낮춘다)

그전에는 JDBCService는 데이터 베이스를 직접 가지고 와서 사용하였다

 

컨트롤러     jdbc service 

    변수를 자료형으로

    service:jDs----> jdbc service
                        jds

컨트롤러에서는 멤버변수로 service를 만들고 jds자료형이 클래스 이름을 jds를 사용하고 있다

문제: jdbc를 이용할 수 없는경우가 생길때 jpa나 마이 바티스를 사용할때는 바꿔야 하는데 service:jds 때문에 에러 발생한다

결합력이 많기 때문에 : service:jds는 이름을 꼭 찍어서 사용하기 때문에

Service를 인터페이스로 해서 인터페이스만 맞으며 꽂아넣으면 되서 구현객체가 어떤걸로 구현했는지 상관없다

service s --> Service: 인터페이스    :jdbc/jpa
                 s

인터페이스로 꽂아주게 되면 xml만 바꿔주면 된다

셋팅은 인터페이스 이름으로 한다

 

  • 파일 분리하기
service/JDBCNoticeService

service/jpaNoticeService
service/NoticeService.java

 

인터페이스를 생성한다

  • 인터페이스

package com.newleture.web.service;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.newleture.web.entity.Notice;

public interface NoticeService {

	//notice jdb 컨트롤러 서비스에서 가져와서 설정
		List<Notice> getList(int page, String field, String query) throws ClassNotFoundException, SQLException;
		int getCount() throws ClassNotFoundException, SQLException ;
		 int insert(Notice notice) throws SQLException, ClassNotFoundException ;
		 int update(Notice notice) throws SQLException, ClassNotFoundException ;
		 int delete(int id) throws ClassNotFoundException, SQLException ;
		 
		}

 

  • DI 설정

 <bean id="noticeservice" class="com.newleture.web.service.jdbc.JDBCNoticeService"/>

그전에는 셋팅하는 자료형이 클래스 명 이였는데 아래의 것은 인터페이스이므로 위의 코드만 바꿔준다

 <property name="noticeService" ref="noticeService"/>

카테고리:

업데이트:

댓글남기기