티스토리 뷰

Framework 란 ?

  • 공통되는 / 반복되는 작업들을 미리 만들어 둔 프로그램

  • 프로그램의 골격이 되는 기본 코드

  • 소프트웨어 개발을 간소화하기 위해 개발됨

  • 개발자는 프레임워크를 기반으로 소스코드를 작성하여 소프트웨어를 완성시키면 된다.

 


Spring Framework 란 ?

POJO 기반의 경량 컨테이너

 

 

 

POJO ( Plain Old Java Object ) 란 ?

  • 평범한 구식 자바 객체
  • 별도로 종속되지 않는 자바 객체를 통칭

EJB의 경우에는 implements, extends 를 사용하는 코드들이 많다. 그럴 경우에 빈 하나를 만들기위해 다양한 부모클래스를 알아야했고, 클래스 간의 의존도가 높아질 수 밖에 없다. POJO는 이러한 복잡한 것을 버리고, 간단한 자바 객체만을 가지고 일을 처리하자는 철학을 가지고 있다.

 

 

  • 특정 규약에 종속되지 않는다. (Java 언어와 꼭 필요한 API 외에 종속되지 않는다.)

  • 특정 환경에 종속되지 않는다.

  • 객체지향 원리에 충실해야 한다.

 

POJO를 사용하는 이유

  • 코드의 간결함 (비즈니스 로직과 특정 환경/low 레벨 종속적인 코드를 분리하므로 단순하다.)

  • 자동화 테스트에 유리 (환경 종속적인 코드는 자동화 테스트가 어렵지만, POJO는 테스트가 매우 유연하다.)

  • 객체지향적 설계의 자유로운 사용

 

참고 URL

https://limmmee.tistory.com/8

https://jobc.tistory.com/121

 

경량컨테이너

프로그램 자체가 가볍지는 않은데 왜 ? -> 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 ) : 관점 지향 프로그래밍

 

 

 

최근에 올라온 글
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Total
Today
Yesterday