스프링 프레임워크
자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케션 프레임워크DI
의존성 주입 ( 클래스에 다른 객체를 만들지말고 생성자로 입력 받음 )의존성 내용을 xml에 저장하고 자바에서는 xml를 파싱함
- 생성자를 이용한 의존성 삽입
- 필요한 의존성을 모두 포함하는 클래스의 생성자를 만들고 그 생성자를 통해 의존성 주입
- 생성자에 파라미터를 만들어 주고 이를 통해 DI 컨테이너가 의존할 오브젝트 레퍼런스를 넘겨주는 방식
- 생성자를 이용한 의존성 삽입
- setter() 메소드를 이용한 의존성 삽입
- 의존성을 입력받는 setter 메소드를 만들고 이를 통해 의존성을 주입
- Spring에서 지지하는 DI 방식
- setter() 메소드를 이용한 의존성 삽입
출처: http://jinpyo900.tistory.com/55 [Computer Science ]
IOC
제어역전, 작은 부품부터 큰 부품으로 만듬 ( 작은 부품으로 조립함 )AOP
관점 지향 프로그래밍 ( 객체 결합도를 낮춤 )Spring MVC
- 일반적인 MVC 구조와 Spring MVC 구조는 다르다 ==> DispatcherServlet
- Spring MVC는 DispatcherServlet 등장으로 web.xml의 역할이 축소
- DispatcherServlet이 해당 어플리케이션으로 들어오는 요청을 모두 핸들링하기 때문
- DispatcherServlet을 이용한다는 것은 Spring에서 제공하는 @MVC를 이용하겠다는 뜻
- Model, View, Controller 설계영역을 노골적으로 분할하여 사용자가 무조건 MVC로 어플리케이션을 설계하게 끔 유도
- @MVC라는 이름 하에 DispatcherServlet 클래스를 web.xml에 등록하는 방식으로 사용
- @MVC는 설계 자체를 model1 방식으로 할 수 없게 만드는 데다, model2 방식을 쉽게 만들 수 있도록 환경 구성
- 1. 처리요청 (URL)
- 클라이언트가 해당 어플리케이션에 접근하면, 접근한 URL 요청을 DispatcherServlet이 가로챔
- web.xml에 등록된 DispatcherServlet의 <url-pattern>이 ‘/‘와 같이 해당 어플리케이션의 모든 URL로 등록되어 있기 대문에 요청을 가로챌 수 있다
- 2. 요청 URL과 매핑되는 Controller 검색
- 가로챈 정보를 HandlerMapping에게 보내 해당 요청을 처리할 수 있는 Controller를 찾아냄
- 3. 처리요청
- HandlerMapping이 해당 요청을 처리할 Controller를 찾아냈다면, 요청을 Controller에게 보내줌
- 이 Controller는 사용자가 직접 구현해 주는 부분
- 4. ModelAndView 리턴
- 해당 요청을 처리한 후, Controller는 요청을 응답받을 View의 이름을 리턴
- 5. ViewResolver
- 4번에서 View의 이름을 리턴할 때, View 이름을 ViewResolver가 먼저 받아 해당하는 View가 존재하는지 검색
- 6. 응답출력
- 해당 View가 있다면 처리 결과를 View에게 보냄
- 이후
- 이 결과를 다시 DispatcherServlet에 보낸 후, DispatcherServlet은 최종 결과를 Client에 전송
- 1. 처리요청 (URL)
출처: http://jinpyo900.tistory.com/55 [Computer Science ]
SOLID 법칙
- 작성된 클래스는 하나의 기능만 가지며 클래스가 제공하는 모든 서비스는 그 하나의 책임을 수행하는 데 집중되어 있어야 한다.
- 즉, 어떤 변화에 의해 클래스를 변경해야 하는 이유는 오직 하나뿐 이어야 한다
- 변경을 위한 비용은 가능한 줄이고, 확장을 위한 비용은 가능한 극대화
- 요구사항의 변경이나 추가사항이 발생하더라도, 기존 구성요소는 수정이 일어나지 말아야 하며, 기존 구성요소를 쉽게 확장해서 재사용할 수 있어야 한다
- OCP를 가능케 하는 중요 메커니즘은 추상화와 다형성
- 서브 타입은 언제나 기반 타입과 호환될 수 있어야 한다
- 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아햐 한다는 원리
- 즉, 어떤 클래스가 다른 클래스에 종속될 때에 가능한 최소한의 인터페이스만을 사용
- Inversion of Control
출처: http://jinpyo900.tistory.com/55 [Computer Science ]
11/28
스프링 세팅 완료... 이클립스에서 진행하려다가 실패해서
STS 새로 깔고 했더니 됨.
역시 환경세팅이 제일 어렵다.
https://hanazuou.tistory.com/158?category=695437
http://all-record.tistory.com/175
junit
자바에서 테스트를 도와주는 프레임워크스프링에서 초기에 DB,myBatis를 연결할 때 테스트하기 위해 사용
myBatis
JDBC 작업시 반복되는 코드를 줄이고 SQL문을 처리하기 위함스프링 패키지 설명
VO - 데이터를 저장할 폼 (빈)DAO - 데이터를 실제로 처리함
Service - 컨트롤러에서 넘겨 받아 DAO로 알맞게 전달
Controller - 사용자의 요청에 맞게 Service를 실행
mapper.xml - myBatis에 SQL 쿼리를 매핑함
myBatis-config.xml - 기본 설정, VO 설정
root-context.xml - DB,mybatis 기본 설정, mapper 위치 설정, sqlSession 설정
sqlSession - 트랜잭션 관리함 , 개발자가 직접 DB연결, 종료를 관리할 필요가 없음