애플리케이션의 기본 구조를 제공하는 것이 프레임워크이다.
애플리케이션을 개발할 때 사용할 수 있도록 미리 만들어 놓은 클래스나 인터페이스등을 제공한다.
장점
- 처음부터 다 만들 필요가 없다.
- 이미 만들어진 기능을 가져다 사용하기 떄문에 효율성이 높고 품질이 보장된다.
- 개발 방법이 정해져 있다.
- 개발의 표준화로 인해서 생산성이 높아진다.
- 개발 후 유지 보수 및 기능의 확장이 용이하다.
- 신입 개발자도 경력자 처럼 세련된 코드를 작성할 수 있다.
- 경량 프레임 워크
- EJB에 비해 가벼운 경량 프레인워크이다.
- 몇개의 모듈과 jar 파일로 구성
- 컨테이너를 지원한다.
- 특정 개체의 생성과 관리를 감강하며 객체 운용에 필요한 다양한 기능을 제공한다.
- singleton, prototype 등 여러 형태의 객체를 운용할 수 있다.
- 제어의 역행(IoC)
- 객체의 생성을 개발자가대신 컨테이너가 담당한다.
- 애플리케이션을 구성하는 객체 간 결합을 느슨한 결합 (낮은 결합도)으로 유지한다.
- 관점지향 프로그래밍(AOP)
- 비즈니스 메소드를 구성하는 공통 모듈과 핵심 모듈을 분리하여 작성한다 .
- 모든 비즈니스 메소드가 반복해서 사용하는 공통 로직을 핵심 비지니스 로직과 구분하여 작성한다.
- 메이븐 프로젝트 정보 : 프로젝트 이름 , 개발자 목록 , 라이선스 정보 등
- 빌드 설정 : 빌드 툴 , 소스 리소스 , 플러그인 등
- 빌드 환경 : 사용자의 환경마다 달라질 수 있는 프로파일 정보
- POM 연관 정보 : 의존 프로젝트 , 상위 프로젝트 , 하위 모듈 등
제어의 역전
개발자가 프로그램을 제어하지 않고 Framework가 프로그햄을 제어하는 것을 의미한다.
객체 생성 의존관계 설정(dependency), 생명주기(Lifecycle)등을 프레임워크가 직접 관리하는 것을 말한다
spring Container에 의해서 관리되는 POJO(Plain Old Java Object)를 의미한다. 쉽게 말하면 자바 객체가 곧 Bean이다.
Bean 만드는 법
src/main/resources 의 각 메소드에 xml 파일을 만든다.<beans> </bean>안에 <bean class="클래스가 있는 주소" id="이름(별칭)"> <property name="필드이름" value="값" /> or <constructor-arg value="값"/> // consrtuctor은 순서대로 입력해 주어야 한다. // value 대신에 ref를 쓰는 경우는 필드로 클래스를 참고하는 경우이다. </bean> 을 넣는다. Namespace 탭의 'p' 옵션 체크로 <property> 태그를 속성으로 넣을 수 있다. -> <bean class="com.gdu.app01.xml02.User" id="user" p:userNo="1" p:userId="admin" />