티스토리 뷰
Framework 란 ?
-
공통되는 / 반복되는 작업들을 미리 만들어 둔 프로그램
-
프로그램의 골격이 되는 기본 코드
-
소프트웨어 개발을 간소화하기 위해 개발됨
-
개발자는 프레임워크를 기반으로 소스코드를 작성하여 소프트웨어를 완성시키면 된다.
Spring Framework 란 ?
POJO 기반의 경량 컨테이너
POJO ( Plain Old Java Object ) 란 ?
- 평범한 구식 자바 객체
- 별도로 종속되지 않는 자바 객체를 통칭
EJB의 경우에는 implements, extends 를 사용하는 코드들이 많다. 그럴 경우에 빈 하나를 만들기위해 다양한 부모클래스를 알아야했고, 클래스 간의 의존도가 높아질 수 밖에 없다. POJO는 이러한 복잡한 것을 버리고, 간단한 자바 객체만을 가지고 일을 처리하자는 철학을 가지고 있다.
-
특정 규약에 종속되지 않는다. (Java 언어와 꼭 필요한 API 외에 종속되지 않는다.)
-
특정 환경에 종속되지 않는다.
-
객체지향 원리에 충실해야 한다.
POJO를 사용하는 이유
-
코드의 간결함 (비즈니스 로직과 특정 환경/low 레벨 종속적인 코드를 분리하므로 단순하다.)
-
자동화 테스트에 유리 (환경 종속적인 코드는 자동화 테스트가 어렵지만, POJO는 테스트가 매우 유연하다.)
-
객체지향적 설계의 자유로운 사용
참고 URL
경량컨테이너
프로그램 자체가 가볍지는 않은데 왜 ? -> EJB에 비해 가볍다는 것
Spring Framework의 특징
OCP ( Open-Closed Principle ) : 개방 폐쇄 원칙
자신의 확장에는 열려 있어야 하며, 주변 변화에 있어서는 닫혀있어야 한다.
A가 B에 의존한다고 할 때,
B는 언제든 다른 기능으로 변화를 줄 수 있도록 확장성 좋게 개방해야 하며, B를 갖다쓰는 A는 변화가 없도록 폐쇄해야한다.
IoC ( Inversion of Control ) : 제어의 역전
프로그램 제어권을 프레임워크가 가져가는 것
제어 권한을 가진 컨테이너에서 상황에 따라 필요할 때 호출한다.
DI ( Dependency Injection ) : 의존성 주입
프레임워크에 의해 객체의 의존성이 동적으로 주입되어 객체 간의 결합을 느슨하게 하는 것
의존관계를 관리하는 방법
1. Constructor Injection
<!-- 기본 constructor 이용하기 -->
<bean id="banana" class="com.test01.MessageBeanImpl"></bean>
<!-- 파라미터 2개인 constructor 사용하기 -->
<bean id="mango" class="com.test01.MessageBeanImpl">
<constructor-arg>
<value>mango</value>
</constructor-arg>
<constructor-arg value="20000"></constructor-arg>
</bean>
<bean id="grape" class="com.test01.MessageBeanImpl">
<!-- index로 순서 지정 가능 -->
<constructor-arg index="1" value="7000"></constructor-arg>
<constructor-arg index="0" value="grape"></constructor-arg>
</bean>
2. Method(setter) Injection
<bean id="lee" class="com.test03.Address">
<!-- setter 호출 -->
<property name="name" value="이순신"></property>
<property name="addr" value="서울시 강남구"></property>
<property name="phone" value="010-1234-5677"></property>
</bean>
<bean id="hong" class="com.test03.Address">
<!-- setter 호출 -->
<property name="name" value="홍길동"></property>
<property name="addr" value="경기도 성남시"></property>
<property name="phone" value="010-1111-2222"></property>
</bean>
AOP ( Aspect Oriented Programming ) : 관점 지향 프로그래밍
'Spring > 이론' 카테고리의 다른 글
[Spring] 스프링 AOP ( Aspect Oriented Programming ) (0) | 2020.03.24 |
---|---|
[Spring] 어노테이션 ( Annotation ) (0) | 2020.03.24 |
[Spring] 스프링 빈 설정파일 ( Spring Bean Configuration File ) - applicationContext.xml 예제 (0) | 2020.03.18 |
[Spring] 스프링 시작하기 ( Eclipse Marketplace 설치 ) (0) | 2020.03.18 |