프레임 워크?
사전적 의미로는 '어떤 것을 구성하는 구조 또는 뼈대'로 소프트웨어적 의미로는 '기능을 미리 클래스나 인터페이스 등으로 만들어 제공하는 반제품' 정도로 해석할 수 있다. 즉, 어느정도 완성된 상태로 제공하는 기능으로 일정한 기준에 따라 개발이 이루어지므로 개발 생산성과 품질이 보장도니 애플리케이션을 개발할 수 있다.
스프링 프레임워크?
프레임워크 중 현재 가장 많이 사용되는것으로 스프링 프레임워크는 자바 웹 애플리케이션 개발을 위한 오픈 소스 프레임워크이며, 동적인 웹 사이트 개발을 위해 여러가지 서비스를 제공하고 있다.
스프링의 특징?
- EJB보다 가볍고 배우기도 쉬우며 경량 컨테이너의 기능을 수행
- 제어 역행(IoC, Inversion of Control) 기술을 이용해 애플리케이션 간의 느슨한 결합을 제어
- 의존성 주입(DI, Dependency Injection) 기능을 지원
- 관점 지향(AOP, Aspect-Oriented Programming) 기능을 이용해 자원을 관리
- 영속성과 관련된 다양한 서비스를 지원
- 수많은 라이브러리와의 연동 기능을 지원
용어 정리
의존성 주입(DI) : 클래스 객체를 개발자가 코드에서 생성하지 않고 프레임워크가 생성하여 사용하는 방법
- 연관관계를 개발자가 직접 코딩을 통해 컴포넌트(클래스)에 부여하는것이 아니라 컨테이너가 연관관계를 직접 규정하는 것 -> 코드에서 직접적인 연관 관계가 발생하지 않으므로 각 클래스들의 변경이 자유로워짐 (loosely coupled, 약한 결합)
제어 역행(IoC) : 서블릿이나 빈 등을 개발자가 코드에서 생성하지 않고 프레임워크가 직접 수행하는 방법
- 전통적인 프로그램에서는 개발자가 작성한 프로그램이 외부 라이브러리의 코드를 호출해서 이용했지만, 제어 역행은 이와 반대로 외부 라이브러리 코드가 개발자의 코드를 호출하게 된다. 즉, 제어권이 프레임워크에게 있어 필요에 따라 스프링 프레임워크가 사용자의 코드를 호출한다.
관점 지향(AOP) : 핵심 기능 외 부수 기능들을 분리 구현함으로써 모듈성을 증가시키는 방법
- 메서드 안의 주기능과 보조 기능을 분리한 후 선택적으로 메서드에 적용해서 사용한다는 개념 -> AOP를 사용하면 전체 코드에 흩어져 있는 보조 기능을 하나의 장소에 모아서 관리할 수 있으며, 보조 기능을 자신이 원하는 주기능에 선택적으로 적용할 수 있어 코드가 단순해지고 가독성도 향상된다.
스프링 API를 이용한 AOP 기능 구현 과정
- 타깃(Target)클래스를 지정
- 어드바이스(Adivece)클래스를 지정
- 설정 파일에서 포인트컷(Pointcut)을 설정
- 설정 파일에서 어드바이스와 포인트컷을 결합하는 어드바이저를 설정
- 설정 파일에서 스프링의 ProxyFactoryBean 클래스를 이용해 타깃에 어드바이스를 설정
- getBean() 메서드로 빈 객체에 접근해 사용
인터페이스 | 추상메서드 | 설명 |
MethodBeforeAdvice | void before(Method method, Object[] args, Object target) throws Throwable |
해당 메서드가 실행되기 전 실행 |
▶ Method method : 대상 객체에서 실행된 메서드를 나타내는 메서드 객체 ▶ Object[] args : 메서드 인자 목록 ▶ Object target : 대상 객체 |
||
AfterReturningAdvice | void afterReturning( Object returnValue, Method method, Object[] args, Object target) throws Throwable |
해당 메서드가 실행된 후 실행 |
▶ Object returnValue : 대상 객체의 메서드가 반환하는 값 ▶ Method method : 대상 객체에서 실행된 메서드를 나타내는 메서드 객체 ▶ Object[] args : 메서드 인자 목록 ▶ Object target : 대상 객체 |
||
ThrowsAdvice | void afterThrowing( Method method, Object[] args, Object target, Exceotuib ex) |
해당 메서드에서 예외 발생 시 실행 |
▶ Method method : 대상 객체에서 실행된 메서드를 나타내는 메서드 객체 ▶ Object[] args : 메서드 인자 목록 ▶ Object target : 대상 객체 ▶ Exception ex : 발생한 예외 타입 |
||
MethodInterceptor | Object invoke( MethodInvocation invocation) throws Throwable |
해당 메서드의 실행 전/후와 예외 발생 시 실행 |
MethodInvocation invocation : 대상 객체의 모든 정보를 담고 있는 개체(호출된 메서드, 인자 등) |
스프링의 주요 기능
스프링 기능 | 설명 |
Core | 다른 기능과 설정을 분리하기 위한 IoC 기능을 제공 |
Context | 스프링의 기본 기능으로서 애플리케이션의 각 기능을 하는 빈(Bean)에 대한 접근 방법을 제공 |
DAO | JDBC 기능을 좀 더 편리하게 사용할 수 있도록 함 - JDBC(자바의 데이터베이스 커넥터) 추상 계층을 제공, 데이터가 담겨있는 VO(Value Object) 클래스를 이용해 사용한다. |
ORM | 하이버네이트나 마이바티스 같은 영속성 관련 프레임워크와 연동된 기능을 제공 |
AOP | 관점 지향 기능을 제공 |
Web | 웹 애플리케이션 개발에 필요한 기능을 제공 |
WebMVC | 스프링에서 MVC 구현에 관련된 기능을 제공 |
'백엔드 > 웹개발' 카테고리의 다른 글
[웹개발] 마이바티스 (0) | 2022.03.14 |
---|---|
[웹개발] 스프링 프레임워크 MVC (0) | 2022.03.11 |
[이클립스/웹개발] MVC를 활용한 답변형 게시판 구현 (7) - 게시판 페이징 기능 (0) | 2022.03.07 |
[이클립스/웹개발] MVC를 활용한 답변형 게시판 구현 (6) - 답글 쓰기 기능 (0) | 2022.03.07 |
[이클립스/웹개발] MVC를 활용한 답변형 게시판 구현 (5) - 글 삭제 기능 (0) | 2022.03.07 |