BACK/Spring
Spring 01
dazz6
2024. 7. 3. 16:49
Spring
엔터프라이즈용 Java 애플리케이션 개발을 편하게 할 수 있게 해 주는 오픈 소스 경량급 애플리케이션 프레임워크
Spring의 특징
종류 | 설명 |
IoC (제어의 역행) | 작업을 수행하는 쪽에서 객체를 생성하는 일반적인 개념을 뒤집은 것으로, 프로그램 제어를 자신이 아닌 다른 곳에 위임하는 것이다. 1. IoC에서는 객체가 자신이 사용할 객체를 생성하거나 선택하지 않는다. 2. 객체는 자신이 어떻게 생성되고 어떻게 사용되는지 알 수 없다. 3. 모든 객체는 제어 권한을 위임받은 특별한 객체(컨테이너)에 의해 만들어지고 사용된다. |
DI (의존성 주입) | 클래스 간의 의존관계를 Bean 설정에 기반해 컨테이너가 자동으로 연결해 주는 방식이다. |
AOP (관점 지향 프로그래밍) | 횡단 관심사*의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적이다. 따라서 코드 자체를 수정하지 않는 대신 기존 코드에 추가 동작인 어드바이스**를 정의하여 추가된 기능이 실행된다. 어느 코드가 포인트컷**을 통해 수정되는지를 별도로 지정하는 구조를 가지고 있다. |
* 횡단 관심사 : 여러 프로그램에 흩어져서 존재하는 공통 기능으로, 꼭 필요한 기능인데 해당 기능을 사용하기 위해 동일하거나 비슷한 코드가 기계적으로 특정 위치에 들어가는 것이 해당된다. (ex. 인증, 로깅)
** 어드바이스 : 부가 기능 또는 횡단 코드를 뜻한다.
*** 포인트컷 : AOP에서 어드바이스를 타깃의 코드 중 어디에 적용할지를 뜻한다.
참고 블로그 : 포인트 컷의 다양한 표현식 | Gyeom Moon (gmoon92.github.io)
참고 서적 : IT CookBook, 짧고 굵게 배우는 JSP 웹 프로그래밍과 스프링 프레임워크 (hanbit.co.kr)
Bean
스프링 컨테이너에 의해 관리되는 재사용 가능한 소프트웨어 컴포넌트로, 인스턴스화된 객체를 의미한다.
public aa(b bb) {
// ...
}
<bean id="aa" class="pack.aa">
</bean>
bean은 기본적으로 arguments가 없는 생성자를 찾기 때문에, 위와 같은 코드를 작성하고 main에서 .getBean() 메소드를 사용할 경우 오류가 발생한다.
<bean id="aa" class="pack.aa">
<constructor-arg>
<ref bean="bb">
</constructor-arg>
</bean>
<bean id="bb" class="pack.bb">
</bean>
위와 같이 수정할 수 있다.