✔ SW적인 의미 : 기능을 미리 클래스,인터페이스 형태로 만들어놓은 제품
✔ 어느정도 완성되어있는 파일을 조합해서 개발
✔ ex) spring, Android, Jqeury
톰캣(서블릿 컨테이너)- 서블릿 생성,초기화,서비스실행,소멸..(서블릿에 관한 모든 권한을 가지고있기때문)
기업 환경 시스템을 구현하기 위한 서버쪽 모델, 애플리케이션 비지니스 로직을 포함하는 서버 어플리케이션 -> 무거운 프레임워크
✔ EJB 보다 가볍고, 배우기쉬운 경량 컨테이너
✔ 제어 역행 (IoC, Inversion of Control) 기술을 사용해서 애플리케이션 간의 느슨한 결합을 제어.
✔ "메서드, 객체의 호출을 개발자가 결정 x, 외부(spring)에서 결정"
✔ 의존성 주입(DI, Dependency Injection) 지원함.
✔ "의존적인 객체를 직접 생성, 제어하는 것이 아니라, 제어의 역행(IoC)으로 특정 객체에 필요한 객체를 외부에서 만들어서 연결"
✔ 관점지향 (AOP, Aspect-Oriented Programming)을 사용하여 자원관리
✔ 핵심 기능들과 부수적인 기능들을 분리해서 모듈성을 증가
✔ 영속성과 다양한 서비스를 지원 (DB)
✔ 수많은 라이브러리를 제공
프레임워크가 마트!, 내가 필요한 것들을 꺼내 쓸수 있음!
✔ WAS를 사용해본 경험이 있는가? (Tomcat)
✔ 스프링을 써본적이 있는가?
✔ Model2 방식 개발을 경험한적 있는가?
✔ WAS 실행시 에러 처리경험이 있는가?
▶ YES : Spring Legacy Project
▶ NO : Spring Starter Project (boot-업데이트 및 최신트렌드 적용)