| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- springjdbc
- 비즈니스레이어
- @RequestMapping
- SpringBoot
- PointCut
- 의존주입
- spring
- 유효성검사
- 서비스레이어
- after-throwing
- @Valid
- AOP
- 생성자주입
- Model
- c:if
- gradle
- 스프링
- @ResponseBody
- .xml
- @RequestParam
- springmvc
- produces
- jointpoint
- frontController
- application.properties
- 바인딩변수
- Java
- 어노테이션
- MVC
- @
- Today
- Total
메모장
비즈니스 레이어 (서비스 레이어) 적용 본문
서버에서는 DBMS (DataBase Management System) 변경이 자주 발생 한다.
즉, DAO 변경이 자주 발생 하게 된다는 의미 이다.
지금의 코드는 DAO를 직접 이용하고 있으므로, 결합도가 높아서 유지보수가 불리한 상태
( 뭔가 객체를 직접 이용하면 결합도가 높아지면서 유지보수가 불리하다. )
다른 DAO 로의 변경이 매우 불리한 상태이다.
지금 AOP를 사용할 수 없기때문에
매번 로그, 보안 , 권한확인, .. 등을 직접 처리해야 하므로 응집도가 낮음
유지보수가 불리한 상태 , 로그를 하나씩 다 달고 있다...!
문제가 DAO를 직접 다 쓰고 있는게 문제
ex) BoardDAO 를 -> BoardDAO2로 바꾸려 시도할때 하나하나 바꿔야 하는 문제점이 있음 !
※ 유지보수를 유리한 상태로 바꿔보자!
그래서, 비즈니스 레이어를 추가해보자 !
- Service 레이어란 ?
비즈니스 로직을 처리하고 관리한다.
비즈니스 로직을 더욱 추상화 하고 관리하기 위해 사용 한다.
Service 레이어는 비즈니스 로직을 직접적으로 다루며,
DAO 와의 인터페이스 역할을 수행 한다.
※ DAO를 직접 이용하지 않고, Service를 통해서 사용해보자 !
1) C의 메서드 인자로 존재하던 DAO를 제거 하고
2) DAO를 대신 사용해줄 Service를 멤버변수로 추가한다.

Service를 멤버변수로 추가 했다 ?
== XxxController.java 와 XxxService xxxService는 의존 관계 !
== 의존 주입 필요 !
== @Autowired 어노테이션 작성 !
DAO의 메서드와 Service의 메서드는 동일하다.
(Service 가 DAO를 대신 사용하는 것이지 DAO를 안쓰는 것은 아니다.)
컨트롤러는 이제 멤버변수로 서비스를 갖고 있기 때문에 별도 dao를 인자로 갖고 있지 않아도
dao 사용되는것을 boardService 로 바꿀 수 있다.
Service 를 통해 DAO를 간접 사용 하여 결합도 낮추기
(== 유지 보수 용이)
XxxController.java 내부의 메서드 에서 사용 하고 있는 모든 DAO 를 제거 한다.
그러면, Command 객체 개념을 사용 하고 있었던, 메서드의 인자인 DAO도 모두 제거 한다.
그리고 나서 DAO "대신 사용할" 특정한 Service를 멤버변수로 추가 한다.

이제는 DAO가 자주 변경되더라도 Service내부의 멤버변수만 변경하면 됨
결합도가 낮아지므로 유지보수가 유리하다!
BoardServiceImpl 여기서 BoardDAO 멤버변수에 BoardDAO2 만 붙이면 바뀔수 있게
유지보수 용이해짐
- 멤버변수로 추가한 Service가 메서드 수행 주체로서 사용되고 있는데 의존 주입이 안됐다 .
의존 관계 이므로 의존 주입(DI)가 필요하다.
@Autowired 의존 주입 해줬다.
- 흐름 간단 정리 (확인하는 절차)
컨트롤러야 main.do 실행해줘!
main.do 하려면 BoardService가 있어야해 있어 ? 어 있어
그러면 객체가 있어야해 객체가 있어? 어 걔도 의존 관계 있네?
그러면 BoardDAO 있어? 어 있어
'Spring > 개념정리' 카테고리의 다른 글
| @RequestParam (0) | 2024.06.21 |
|---|---|
| Model 객체 (0) | 2024.06.21 |
| 레이어 개념 정리 (0) | 2024.06.21 |
| @ModelAttribute 어노테이션 (0) | 2024.06.21 |
| Spring 에 대한 간단 정리 (0) | 2024.06.21 |