11.service 객체 분리하기
서비스 객체 분리하기
서비스 객체를 분리한다 (결합력을 낮춘다)
그전에는 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"/>
댓글남기기