[Java / Spring] 16. 데이터 서비스 클래스 준비 및 객체 사용하기

2022. 4. 23. 15:06·🍃 Spring, Spring Boot/스프링 프레임워크 기초

실습에 들어가기 전, 먼저 데이터 서비스를 위한 파일을 준비한 뒤 데이터베이스와 연동하기 위한 작업을 수행해준다.

 

데이터베이스를 연동하기 위해서는 라이브러리를 추가해주어야 하므로 다음의 코드를 pom.xml 파일에 추가해주었다.

 

pom.xml

 

 

이후 사전에 준비한 NoticeService 클래스의 객체를 사용하기 위해 dispatcher-servlet.xml 파일을 열어 다음과 같이 코드를 수정해준다.

 

 

dispatcher-servlet.xml

 

위 코드의 의미는 noticeService라는 이름의 NoticeService 클래스 객체를 생성한 뒤, 이를 setter(setNoticeService)를 통해 ListController에 있는 객체 변수에 대입하겠다는 것이다.

 

즉, 이제 ListController에 자료형이 NoticeService인 객체 변수와 setter를 구현해주어야 한다.

 

ListController

 

 

이후 다음과 같이 해당 객체를 이용하여 데이터베이스에 접근하여 데이터를 받아올 수 있을 것이다.

 

ListController

 

 

위에서 받아온 데이터를 출력하기 위해 뷰 페이지(list.jsp)로 이동하여 태그 라이브러리를 추가하고 <tr> 태그 부분을 하나만 남겨둔 뒤, Notice.java 파일의 getter에 따라 다음과 같이 수정해주었다.

 

 

list.jsp

 

 

이후 index 파일을 통해 페이지를 실행시키고 공지사항 페이지로 이동했을 때 데이터베이스의 데이터대로 결과가 출력되는지 확인한다.

 


위에서 서비스 객체를 이용해서 데이터베이스 연동하는 간단한 실습을 하였는데, 일반적으로 스프링을 이용할 때에는  위와 같이 컨트롤러가 서비스 클래스를 직접 사용하지 않는다. 다시말해 서비스 객체를 분리해서 사용하여 결합력을 낮추는 것이 일반적이다.

 

서비스 객체를 분리하기 위해서 우리는 인터페이스(Interface)를 사용할 것이다. 우선 패키지를 생성하여 서비스 방식에 따라 이름을 변경하고 다음과 같이 파일을 분류해주었다.

 

Project Explorer

 

 

이후 인터페이스를 'NoticeService'라는 이름으로 추가하여 주었다.

 

다음으로 ListController 클래스의 코드를 다음과 같이 수정해준다.

 

ListController

 

 

이제 NoticeService 인터페이스를 아래와 같이 구현하고 정리한다.

 

NoticeService

 

그렇다면 JDBCNoticeService는 위의 인터페이스에 따라 구현된 것이 될 것이다.

 

JDBCNoticeService

 

 

이제 dispatcher-servlet.xml 파일로 이동하여 위에서 NoticeService 클래스의 객체를 생성하던 부분을 다음과 같이 수정해준다.

 

dispatcher-servlet.xml

 

 

이렇게 하면 우리는 xml 파일의 class 속성만 적절히 변경함으로써 서비스 방식을 손쉽게 변경할 수 있다.


JDBCNoticeService 클래스를 열어보면 데이터베이스 연동을 위한 연결 문자열들이 코드로 구현되어 있는 것을 확인할 수 있다.

 

JDBCNoticeService

 

 

위처럼 자바 코드로 연결 정보를 작성해놓으면 데이터베이스 위치 변경, 비밀번호 변경 등으로 인해 연결 정보를 수정하기 위해서는 코드를 직접 다시 수정하고 컴파일 한 뒤, 배포까지 다시해야하는 일이 발생하게 된다. 만약 서비스 클래스의 객체가 여러 개가 있다고 한다면 이는 훨씬 더 심각한 문제가 될 것이다.

 

따라서 자바 코드로 작성해 놓은 연결 정보 부분을 따로 분리해서 dispatcher-servlet.xml 파일에서 관리하도록 수정하고자 한다.

 

우선 기존에 연결 정보를 작성했던 구문은 주석처리 해놓은 뒤, 해당 구문 아래에 다음과 같이 코드를 작성해준다.

 

JDBCNoticeService

 

 

DataSource는 인터페이스 이므로 객체를 직접 생성할 수는 없기 때문에 따로 setter를 구현해준다.

 

JDBCNoticeService

 

 

이후 기존에 있던 Connection을 위한 문장을 모두 주석처리 또는 삭제한 뒤, 다음의 코드로 대체한다.

 

JDBCNoticeService

 

 

이제 실질적으로 dataSource 변수에 객체를 대입하기 위해 dispatcher-servlet.xml 파일을 열고 다음과 같이 코드를 추가 및 수정해준다.

 

dispatcher-servlet.xml

 

 

이후 페이지를 실행하기 전에 DataSource 라이브러리를 가져오기 위해 pom.xml 파일을 열고 라이브러리를 추가해준다.

 

pom.xml

 

 

이제 페이지를 실행하여 결과를 확인한다.

저작자표시 (새창열림)

'🍃 Spring, Spring Boot > 스프링 프레임워크 기초' 카테고리의 다른 글

[Java / Spring] 18. Annotation 활용하기  (0) 2022.04.23
[Java / Spring] 17. 스프링 설정파일(dispatcher-servlet.xml) 분리하기  (0) 2022.04.23
[Java / Spring] 15. Tiles 설정하기  (0) 2022.04.21
[Java / Spring] 14. 컨트롤러 추가 및 페이지 모듈 분리  (0) 2022.04.21
[Java / Spring] 13. 정적 파일 서비스하기  (0) 2022.04.20
'🍃 Spring, Spring Boot/스프링 프레임워크 기초' 카테고리의 다른 글
  • [Java / Spring] 18. Annotation 활용하기
  • [Java / Spring] 17. 스프링 설정파일(dispatcher-servlet.xml) 분리하기
  • [Java / Spring] 15. Tiles 설정하기
  • [Java / Spring] 14. 컨트롤러 추가 및 페이지 모듈 분리
Baeg-won
Baeg-won
  • Baeg-won
    좋았다면 추억이고 나빴다면 경험이다.
    Baeg-won
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 🍃 Spring, Spring Boot
        • 스프링 프레임워크 기초
        • 스프링 핵심 원리 - 기본편
        • 자바 ORM 표준 JPA 프로그래밍 - 기본편
        • 스프링 MVC
        • 실전! 스프링 부트와 JPA 활용1 - 웹 애플리..
      • 🥑 Web Technoloy
      • 🚗 Backend Toy Project
        • 스프링 부트 게시판
        • Photogram
        • Baeg-won Clothing Gallery
      • 🥇 Problem Solving
        • Breadth-First Search
        • Depth-First Search
        • Backtracking
        • Simulation
        • Two-pointer
        • Binary Search
        • Greedy
        • Dynamic Programming
        • Minimum Spanning Tree
        • Dijkstra
        • Floyd warshall
      • ☕ Java
        • 명품 자바 에센셜
        • Applications
      • 🍦 JavaScript
        • JavaScript 기초
      • 🐧 Linux
        • 이것이 리눅스다(CentOS 8)
      • 📟 Database
        • 혼자 공부하는 SQL
      • 🧬 Data Structure
      • 🎬 HTML
      • 🎤 Tech Interview
      • 📌 etc
        • Unity 2D Raising Jelly Game
        • C++
        • 영어 쉐도잉
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Baeg-won
[Java / Spring] 16. 데이터 서비스 클래스 준비 및 객체 사용하기
상단으로

티스토리툴바