Frame(틀)
+Work(일하다)
- 개발자가 소프트웨어를 개발함에 있어 코드를 구현하는 개발 시간을 줄이고,
코드의 재사용성을 증가시키기 위해 일련의 클래스 묶음이나 뼈대, 틀이 라이브러리 형태로 제공되는 것- 제어의 역전 개념이 적용된 대표적인 기술
개발자가 만든 클래스들의 나열로, 다른 프로그램들에서 사용할 수 있도록 제공하는 방식
제어 흐름에 대한 주도성이 누구에게 / 어디에게 있는가에 있다.
즉, 어플리케이션의 Flow(흐름)을 누가 쥐고 있느냐에 달려 있다.
구분 | 설명 | 종류 |
---|---|---|
영속성 Framework | 데이터의 저장, 조회, 변경, 삭제를 다루는 클래스 및 설정 파일들을 라이브러리화하여 구현한 프레임워크 | - Mybatis - Hibernate |
자바 Framework | ava EE를 통한 웹 어플리케이션 개발에 초점을 맞추어 필요한 요소들을 모듈화 하여 제공하는 프레임워크 | - Spring Framework - 전자정부표준 - Spring - Struts |
화면 구현 Framework | Front-End를 보다 쉽게 구현할 수 있게 틀을 제공하는 프레임워크 | - Bootstrap - Foundation - MDL |
기능 및 지원 Framework | 특정 기능이나 업무 수행에 도움을 줄 수 있는 기능을 제공하는 프레임워크 | - Log4j - JUnit 5 - ANT |
자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크
- 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있음
- 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준 프레임워크
(Spring MVC Project 기반 프레임워크)의 기반 기술로서 쓰이고 있음- 공식 사이트 바로 가기
제어의 역전 (Inversion of Control)
프로그램을 구동하는데 필요한 객체에 대한 생성, 변경 등의 관리를 프로그램을 개발하는 사람이 아닌 프로그램을 구동하는 컨테이너에서 직접 관리하는 것
-> 이때 생성된 객체 ==Bean
Bean (빈)
- 스프링이 IoC 방식으로 관리하는 Class
- 스프링이 직접 생성과 제어를 담당하는 객체
Bean Factory (빈 팩토리)
- 스프링의 IoC를 담당하는 핵심 컨테이너
- Bean을 등록, 생성, 조회, 반환하는 기능을 담당
ApplicationContext (애플리케이션 컨텍스트)
- BeanFactory를 확장한 IoC 컨테이너
- Bean을 등록하고 관리하는 기능은 BeanFactory와 동일하지만 스프링이 제공하는 각종 부가 서비스를 추가로 제공함
GenericXmlApplication Context
- ApplicationContext 를 구현한 Class
- 일반적인 XML 형태의 문서를 읽어 컨테이너 역할을 수행
Configuration metadata (설정 메타 정보)
- ApplicationContext 또는 BeanFactory가 IoC를 적용하기 위해 사용하는 설정 정보
- 설정 메타 정보는 IoC 컨테이너에 의해 관리되는 Bean 객체를 생성하고 구성할 때 사용
의존성 주입 (Dependency Injection)
사용하는 객체를 직접 생성하여 만드는 것이 아니라 컨테이너가 빈의 설정 정보를 읽어와 자동으로 해당 객체에 연결하는 것
<bean id=“객체의 이름" class=“클래스 풀네임“>
<property name=“name” value=“OOO”/>
<property name=“name” ref=“OOO”/>
</bean>
- name 속성 : Class에서 선언한 필드 변수의 이름
- value 속성 : 단순 값 또는 Bean이 아닌 객체를 주입할 때 사용
- ref 속성 : Bean 이름을 이용해 주입할 Bean을 찾음
<bean id=“불러 올 객체" class=“클래스 풀네임“>
<constructor-arg index=“0” value=“OOO”/>
<constructor-arg name=“OOO” ref=“OOO”/>
</bean>
- Constructor 주입 방식은 새엉자의 파라미터를 이용하기 때문에 한번에 여러 개의 객체 주입 가능
- 필드 선언 순서에 따라 index 속성을 통해서도 접근 가능
(Plain Old Java Object)
(Aspect Oriented Programming)
🔽 Spring AOP 자세히 알아보기👀 🔽
Spring AOP (23.09.01)
(Portable Service Abstraction)
Hibernate
를 사용하든 EclipseLink
를 사용하든 개발자는 이 모듈의 의존 없이 프로그램에 집중할 수 있다.
많은 도움이 되었습니다, 감사합니다.