Spring 핵심 기능
1. The IoC Container
2. Resources
3. Validation, Data Binding, and Type Conversion
4. Spring Expression Language (SpEL)
5. Aspect Oriented Programming with Spring
6. Null-safety
7. Logging
The IoC Container
IoC (Inversion of Control)
"전통적인 제어 흐름에 비추어볼 때, 제어 흐름을 반대로 뒤집은 것" - Wikipedia
제어 반전, 제어의 반전, 역제어는 프로그래머가 작성한 프로그램이 재사용 라이브러리의 흐름 제어를 받게 되는 소프트웨어 디자인 패턴을 말한다.
라이브러리를 사용할 때는 내 코드가 라이브러리 코드를 호출하지만 프레임워크를 사용할 때는 프레임워크가 내 코드를 호출합니다
wikipidia 예제 - Inversion of control - Wikipedia
public class ServerFacade {
public <K, V> V respondToRequest(K request) {
if (businessLayer.validateRequest(request)) {
Data data = DAO.getData(request);
return Aspect.convertData(data);
}
return null;
}
}
위의 예제는 모든 것이 결합되어있다. 하나가 바뀌면 영향을 받게 됩니다.
public class ServerFacade {
public <K, V> V respondToRequest(K request, DAO dao) {
return dao.getData(request);
}
}
결합도를 떨어트려주어 serverFaacade 는 분리되어 독립성을 갖게됩니다.
==> 이런것을 제어의 흐름을 역전하는것
Resource
low-level resource 에 접근할 수 있는 보다 폭넓은 기능을 제공
• UrlResource
• ClassPathResource
• FileSystemResource
• PathResource
• ServletContextResource
• InputStreamResource
• ByteArrayResource
Validation, Data Binding, Type Conversion
• 데이터의 검증
• 데이터를 인식하고 자료형에 할당
• 데이터 자료형의 변환
SpEL
• 스프링 애플리케이션의 런타임에 다양한 데이터에 접근하기 위한 언어
• JSP Unified EL 과 유사하지만 스프링에 특화되어 더 다양한 기능을 제공
Aspect Oriented Programming(AOP) with Spring
• AOP: 관점 지향 프로그래밍 - 공통 기능을 개발자의 코드 밖에서 필요한 시점에 적용 가능, 반복 사용되는 로직들을 모듈화하여 필요할 때 호출해서 사용하는 방법
• AOP 를 적극적으로 사용하고 지원하는 프레임워크
• Proxy, Aspect, Join Point, Advice, Pointcut, Weaving
• CGLib, AspectJ
• AOP 를 사용하지 않아도, 심지어 몰라도 여전히 프레임워크를 사용 가능
Null-safety
null-safe 한 코드를 작성할 수 있는 다양한 방법을 지원
• @Nullable
• @NonNull
• @NonNullApi
• @NonNullFields
Logging
별도의 외부 설정 없이 로깅 구현체 사용 가능
• SLF4J + Logback
• Log4j 2
• JUL (java.util.logging)
'Java&Spring' 카테고리의 다른 글
[Spring] AOP 관점지향 프로그래밍 (0) | 2023.04.04 |
---|---|
[Java&Spring] opp 정렬체 구현 (0) | 2023.03.27 |
[JAVA기초] JAVA란? (0) | 2023.03.13 |
댓글