Http프로토콜 환경은 클라이언트가 응답 받으면 연결을 끊어버리는특성과
통신이 끝나면 상태를 유지하 지 않는 특성을 갖는다
때문에 서버에서는 클라이언트가 누군지 매번 확인해야한다
이러한 약점을 보완하기위해 세션과 쿠키를 사용한다
쿠키를 기반으로 사용자 정보를 서버 측에서 관리한다
클라이언트 로컬에 저장되는 키와 값이들어있는 작은 데이터 파일
차이점
HTTP프로토콜 환경에서 작업
그중 MVC방식으로 작업하고
Spring 프레임워크를 사용한다
DI (객체의 의존성)
객체가 필요할때 new연산자로 객채를 만드는 것이 아닌 spring컨테이너에 있는
객체의 주소를 주입 받는다
컨테이너에 객채를 등록하는법
spring의 설정 파일로 객체를 생성하고 컨파일에 등록시킨다
spring설정 파일은 xml파일로 정의 할 수 있고 java파일로도 정의할 수 있다
spring 컴파일하면서 xml파일에 설정된 파일을 통해 컨테이너에 객체를 만든다
Spring에서는 기본적으로 싱글톤을 지원하고 설정에 따라서 싱글톤을 지원하지 않게 할 수 있다
sprong을 사용하는것은
협업 대규모 프로젝트
컨트롤러 -> DAO -> 요청 : 이 구조 가능
컨트롤러가 작업을 요청한다, 만약 요청할 작업이 많아질수록 컨트톨러는 해야할게 많아진다
컨트롤러 -> 서비스 -> DAO : 이 구조로 작성을 많이 한다
컨트롤러가 서비스에게 작업을 요청한다, 서비스는 알아서 요청을 처리한다
컨트롤러는 요청할 작업에서 자유로워지고 서비스가 처리한 결과면 응답받으면된다
============각 layer별 개발 기술==========
서비스 layer도 개발자가 마음대로 구현해도 되나 스프링에서는 인터페이스로 구현하도록한다
그래서 관련 객체도 스프링에서 관리한다
DAO layer은 mybatis에서 개발한다
mybatis에서는 인터페이스로 DAO를 작성하도록한다
인터페이스 설명하고자 하면
추상클래스, static(공용), finel(상수) 이를 정의 하고 다른 클래스에서 구현받아서 사용한다
구현받은 클래스는 인터페이스의 추상클래스는 반드시 오버라이드해야한다
인터페이스 자료형의 변수는 구현 받은 모든 클래스의 객체의 주소값을 가진다(다형성) - 의존성을 낮추기 위해 사용
인터페이스 변수로 구현받은 객체의 메서드에 접근 가능하다
객체가 다르지고 그기능도 다르지만 메서드 하나로 서로다른 기능을 수행 시킬수 있다
추가적인 작업을 할떄
최대한 기존의 소스를 건들지 않고 만든다 (컨트롤러의 변경을 최소화한다)
스프링에서 인터페이스를 구현 받은 객체로 만들어 준다 여기서 기억해야 할 것은 잡아에서 인터페이스를
여러개의 클래스가 구현할수있지만 스프링에서는인터페이스 한개의 클래스만 구현 받을 수 있다
=====================================================