ejb(규칙)
=> SPRING(단순 규칙, 디자인 패턴) + Maven(프로젝트 생명주기) + 라이브러리
=> 프레임워크!
model - 서비스 기능(DB, JAVA)
view - 출력 (jsp)
control - 요청, 관리
웹 애플리케이션 개발 시
자바 : 한 클래스 안 수직적 흐름만 제어
스프링 : 틀정 클래스에 대한 수평적 처리까지 가능
=> 의존성 주입Dependency Injection이나 관점 지향 프로그래밍Aspect Oriented Programming과 같은 기능 + 웹 MVC 프레임워크(기본 웹 개발 가능) 제공
=> 별도 API 이용해 어플리케이션 코드 따로 작성 X
=> 인터페이스 반드시 구현하거나 HttpServlet 클래스 상속 필요 X
: 특정 데이터베이스나 서버에 의존하지 않는 자바 클래스만으로 구성해도 프로그래밍이 가능, 어떤 규약이나 규제 없으므로 객체 지향적 설계 자유로움
=> 객체 간 관계 관리에 사용. 객체 또는 구성 요소 사이의 의존 관계를 직접 생성,제어하는 것이 아니라 외부 bean 설정 파일(*.xml) 활용하여 스프링 컨테이너가 자동 연결 => 개발자가 직접 컨테이너 API로 의존적인 객체들의 관계에 관여할 필요X
=> 어플리케이션 객체 간 결합도 낮춤, 의존 관계 줄임(loose coupling), 프로그램 설계 용이, 변경 사항 적용 쉬워 확장성 좋음, 각 객체 간 의존 관계와 객체들의 생명주기를 간편하게 개발.유지 보수 가능
비즈니스 로직 : 업무에 필요한 데이터를 처리하는 애플리케이션 일부, 각종 처리
-- 클라이언트 프로그램 <= 사용자 인터페이스 + 비즈니스 로직
-- 서버 프로그램 : 대부분 비즈니스 로직만으로 구성
: 각 모듈이 핵심 기능 외 로깅, 트랜잭션 관리, 보안 등 시스템 서비스를 수행 -> 여러 컴포넌트와 관련됨 => 공통 관심사(cross-cutting concren) => 비즈니스 로직으로 분리, 이 공통 관심사를 효과적으로 앱에 삽입하는 기술(관점 지향 프로그래밍)
==> 핵심적인 기능에섭 부가적 공통 관심사 분리 후 공통 모듈(Aspect)을 만들어 설계하고 개발하는 방법
: 쪼갤 수 없는 최소 단위 작업, 데이터 무결성과 일관성 보장하는 필수 기법 => 어떤 작업 프로세스를 하나로 묶어 실행하다 작업이 하나라도 실패 시 모두 실패 처리-전체 작업 성공 시 성공-->논리적 작업 묶음
스프링-디자인 패턴
controller -> service -> SI -> DAO -> XML -> DB
db바뀌어도 소스 그대로 사용 가능 => PSA
본연의 JAVA(plain oriented Java) 사용(버전 상관 X) => PoJo
의존성 주입defendency inject => DI
: 이전에 이미 만들어진 객체 주입 => 다른 클래스에서도 활동이 가능하게 함(객체 생성-new 알아서)
제어의 역전 => IoC
로그 보안 트랜잭션 에러 - 개발 시 부수적인 업무(있으면 좋지만 필수는 아님) => AOP
고객 -> 마케터 -> 기술자 -> 액정 기술자 -> 창고 관리자 ->창고
Controller -> Service(Interface-정의만 되어 있음) -> ServiceImpl -Value Object 태워서 보냄-> Data Access Object(창고 접근) -> xml(select...) -> DB