의존성 주입 - XML
1.
클래스 파일 및 생성
a.
BoardDAO.java
b.
BoardService.java
c.
BoardServiceImpl.java
d.
Board.java
e.
HomeController.java
f.
home.jsp
2.
root-context.xml 에서 빈 등록
a.
BoardDAO.java
b.
BoardServiceImpl.java
i.
BoardDAO 빈을 참조하여, 빈을 등록
3.
의존성 자동 주입
클래스 파일 생성
1.
BoardDAO.java
2.
BoardService.java
3.
BoardServiceImpl.java
4.
Board.java
5.
HomeController.java
BoardDAO.java
package com.aloha.spring.dao;
import java.util.ArrayList;
import java.util.List;
import com.aloha.spring.dto.Board;
public class BoardDAO {
// 빈으로 등록될 때, 생성될 기본 생성자 정의
public BoardDAO() {
}
public List<Board> list() {
List<Board> boardList = new ArrayList<Board>();
boardList.add(new Board("제목01","작성자01","내용01"));
boardList.add(new Board("제목02","작성자02","내용02"));
boardList.add(new Board("제목03","작성자03","내용03"));
System.out.println("BoardDAO 실행됨...");
return boardList;
}
}
Java
복사
BoardService.java
package com.aloha.spring.service;
import java.util.List;
import com.aloha.spring.dto.Board;
public interface BoardService {
// 게시글 목록
public List<Board> list();
}
Java
복사
BoardServiceImpl.java
package com.aloha.spring.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.aloha.spring.dao.BoardDAO;
import com.aloha.spring.dto.Board;
public class BoardServiceImpl implements BoardService {
// BoardServiceImpl --> BoardDAO 에 의존
private BoardDAO boardDAO;
// 의존성 자동 주입
// - BoardDAO 빈을 참조하다면,
// <bean><constructor-arg ref="boardDAO" /></bean>
@Autowired
public BoardServiceImpl(BoardDAO boardDAO) {
this.boardDAO = boardDAO;
}
// @Autowired
// public BoardServiceImpl(int test) {
// this.test = test;
// }
@Override
public List<Board> list() {
return boardDAO.list();
}
}
Java
복사
Board.java
package com.aloha.spring.dto;
public class Board {
private String title;
private String writer;
private String content;
public Board() {
}
public Board(String title, String writer, String content) {
this.title = title;
this.writer = writer;
this.content = content;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
@Override
public String toString() {
return "Board [title=" + title + ", writer=" + writer + ", content=" + content + "]";
}
}
Java
복사
HomeController.java
package com.aloha.spring;
import java.text.DateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.aloha.spring.dto.Board;
import com.aloha.spring.service.BoardService;
import com.aloha.spring.service.BoardServiceImpl;
/**
* Handles requests for the application home page.
*/
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
private BoardService boardService;
@Autowired
public HomeController(BoardService boardService) {
this.boardService = boardService;
}
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(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 );
// 게시글 목록 조회 요청
List<Board> boardList = boardService.list();
model.addAttribute("boardList", boardList);
if( boardList != null )
for (Board board : boardList) {
logger.info("board - " + board);
}
return "home";
}
}
Java
복사
home.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Home</title>
</head>
<body>
<h1>
Hello world!
</h1>
<P> The time on the server is ${serverTime}. </P>
<hr>
<table border="1">
<tr>
<th>제목</th>
<th>작성자</th>
<th>내용</th>
</tr>
<c:forEach var="board" items="${ boardList }" >
<tr>
<td>${ board.title }</td>
<td>${ board.writer }</td>
<td>${ board.content }</td>
</tr>
</c:forEach>
</table>
</body>
</html>
HTML
복사





