결합도가 높은 코드는?
하나의 객체로 인해(다양한 객체이지만,) 이 객체가 하나의 클래스 안에 서로 다른 메서드에 적용이 될 때,
만약 그에 대한 내용을 바꿔야할 때, 관리도 어렵고 또 재사용하기도 번거로운 프로그램이 된다.
그러므로, 이것을 떨어뜨리기 위해 나타난 개념이 DI다.
DI(의존성 주입)
의존성, 종속성을 떨어뜨려 주고 코드의 재사용이 가능하게 도와준다.
만약, 종속성을 띄는 클래스가 있을 경우(예, 인터페이스), 해당 클래스에 대한 자바코드를 수정할 때, 직접 가서 수정해야 함(재사용성이 떨어짐)
@Autowired //선언한 것에 대한 것과 해당 내용을 포함하는 DAO를 직접 찾아내어 매핑시킨다.
IMemberDAO memberDAO;
똑같은 1) DAO 선언을 모든 파일에서 사용하는 것과 2) 종속됨을 각각의 파일에서 나타내는 것 은 매우 비효율적이다(속도의 차이가 나기 때문)
그래서 DI 개념을 써서 속도를 낮추고 효율성을 높이게 된다.
DAO
서비스 영역
- DAO(서비스단)처럼 한 쌍을 이루며 존재한다(인터페이스와 클래스)
--> 여기서, DAO(서비스영역)라는 것을 알리기 위해, DAO에 @Repository를 쓴다.
[인터페이스로 구현해주고 필요한 메서드를 오버라이드 해주는 영역이 된다.]
그 다음, 서비스 영역은 Bean등록을 해줘야 Autowired와 싱글톤이 가능하게 된다.
(앞선 글에서, 어노테이션은 web.xml에 설정할 수 있다.
web.xml에다가 ServletDispatcher를 해서 매핑을 하는 것이다. ) 글처럼, 매핑될 수 있도록 환경을 만든다.
그다음이, Control에서 서비스를 호출하는 것.
여기서는, 각각의 클래스(서비스 정보를 가지고 있는 클래스)는 Implement파일을 의미하게 되고,
@Autowired를 씀으로써 직접 객체를 만들어주는 일을 한다.
즉, 직접적으로 만들지 않고 어노테이션 지정만을 통해서 객체 생성이 가능하다(DI의 사용 이유다)
파일 첨부하기 및 보기(게시판이용) (0) | 2021.08.07 |
---|---|
Spring Boot File Upload (0) | 2021.08.07 |
Spring을 이용한 MVC 구조 업그레이드 (0) | 2021.08.07 |
sts를 이용한 다양한 설정 확인(매핑 등의 설정) (0) | 2021.08.05 |
sts를 이용한 스프링 프레임 워크 (0) | 2021.08.05 |