뉴렉처 스프링MVC(20 ~ 24)

김상복·2022년 4월 19일
0

뉴렉처스프링

목록 보기
7/7
post-thumbnail

20.21.22 Service 파일에 대한 설명

간단하게 이야기하자면

Service는 DAO의 역활을 하게된다

DAO란?

JAVA 코드들로 이루어진 실행 메소드들의 클래스이다

그리고 해당 Service를 만들 때 공통된 Service 내용이지만 안의 코드가 다를 때를 대비해서 반드시 거쳐갈 수 있는 메인 인터페이스를 만들고 implements 해서 사용한다

[예]

NoticeService
(1) JDBCNoticeService로 연결
(2) JPANoticeService로 연결

이런 식으로 연결해서 언제든 xml 파일 설정을 통해서 교체할 수 있도록해서 유지보수를 편하게 해준다

23. DataSource로 Connection 사용

private String url = "jdbc:oracle:thin:@localhost:1521/xe";
private String uid = "jsp";
private String pwd = "tigar";
private String driver = "oracle.jdbc.driver.OracleDriver";

원래 Service 클래스에서 이런식으로 String 변수에 각각의 정보를 입력해서

메소드 마다

Class.forName(driver);
Connection con = DriverManager.getConnection(url,uid, pwd);

이렇게 DB와 연결을 시켰지만 그렇게 되면 DB를 변경하거나 할 때 유지보수가 너무나도 힘들어진다

그렇기 때문에 우리는 DataSource라는 인터페이스를 사용해서 DB와 연결시키는 정보를 xml에 셋팅한다

  1. DataSource를 Service 클래스에 주입시킬 수 있게 Setter 셋팅
private DataSource dataSource;
 
 
  public void setDataSource(DataSource dataSource) 
  {
  this.dataSource = dataSource;
  }

위와 같은 코드로 Service 클래스에 xml을 통해 주입시킬 수 있게 Setter를 셋팅한다

  1. dispatcher-servlet.xml에 주입 셋팅

    <bean id="noticeService" class="com.newlecture.web.service.jdbc.JDBCNoticeService">
    <property name="dataSource" ref="dataSource"/>
    </bean>
    
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="url" value="jdbc:oracle:thin:@localhost:1521/xe"/>
    <property name="username" value="jsp"/>
    <property name="password" value="tigar"/>
    </bean>

위의 코드의 해석을 해보자면

(1) noticeService라는 이름의 JDBCNoticeService 클래스에 dataSource라는 bean을 name="dataSource 즉, setDataSource에 주입시킨다. 이말은 즉, bean id명이 dataSource인 bean을 noticeService에 주입시킨다는 의미이다

(2) dataSource는 springframework에서 제공하는 인터페이스를 활용한다
property에 들어갈 정보는 4가지로 driverClass, url, username(id), password가 있고 해당 정보를 셋팅해두면 나중에 유지보수 할 때 굉장히 편해진다

24. xml 파일 분리

원래는 dispathcer 파일에 모든 xml 파일을 모아뒀었으나, 유지 보수를 위해서라도 나누는 것이 좋다

보통은

  1. 보안 : security
  2. 서비스(실행 메소드) : service
  3. DB관련 : servlet

로 나눠서 파일을 저장한다고 한다

그렇게 되면 기존의 dispathcer.xml을 주입시켰던 web.xml의 설정도 변경이 필요하다

중요한 점은 파일 코드가 아닌 이런식으로 주입시킨다는 것이 중요하다

profile
초보 개발자

0개의 댓글