프로그래밍을 하기 위한 어떠한 틀이나 구조. 개발자가 애플리케이션의 핵심 로직을 개발하는 것에 집중할 수 있도록 함.
Java 기반의 웹 애플리케이션을 개발하는데 필요한 Framework.
프론트와 백부분이 분리되어 개발이 가능함
객체 지향 설계 원칙에 잘 맞는 재사용성
확장이 가능한 애플리케이션 개발 스킬을 향상
보다 나은 성능과 서비스의 안전성이 필요한 복잡한 기업용 엔터프라이즈 시스템을 제대로 구축하기 위한 능력을 기를 수 있음.
Plain Old Java Object
IoC/DI, AOP, PSA를 통해 달성할 수 있음
아래 두가지의 기본적인 규칙을 지키면서 프로그래밍 하는 것
1. Java나 Java의 스펙에 정의된 것 이외에는 다른 기술이나 규약에 얽매이지 않아야 한다.
2. 특정 환경에 종속적이지 않아야 한다.
1. 특정 환경이나 기술에 종속적이지 않으면 재사용 가능하고, 확장 가능한 유연한 코드를 작성할 수 있다.
2. 저수준 레벨의 기술과 환경에 종속적인 코드를 애플리케이션 코드에서 제거함으로써 코드가 깔끔해진다.
3. 코드가 깔끔해지기 때문에 디버깅하기도 상대적으로 쉽다.
4. 특정 기술이나 환경에 종속적이지 않기 때문에 테스트 역시 단순해진다.
5. 객체지향적인 설계를 제한없이 적용할 수 있다.
Inversion of Control/Dependency Injection
IoC란 애플리케이션 흐름의 주도권이 뒤바뀐 것
서버는 main method가 없고 클라이언트 요청마다 Servlet 컨테이너 내의 컨테이너 로직(Service() 메서드)이 서블릿을 직접 실행시켜 줌
DI는 IoC의 개념이 Spring에 적용된 것.
느슨한 결합(Loose Coupling)을 위해 느슨한 의존성 주입을 하기 때문.
주로 인터페이스를 사용한다.
Aspect Oriented Programming (관심 지향 프로그래밍)
애플리케이션 핵심 업무 로직에서 보안, 트랜잭션 같은 공통 로직을 분리하는 것
Portable Service Abstraction
클라이언트가 추상화된 상위 클래스를 일관되게 바라보며 하위 클래스의 기능을 사용하는 것
추상화 -> 일관된 방식으로 해당 서비스의 기능을 사용할 수 있음
기술이 변경되더라도 최소한의 변경으로 요구사항을 반영하기 위함
애플리케이션의 요구 사항 변경에 유연하게 대처할 수 있음
어떠한 시스템을 구축하는데 있어 해당 시스템의 비즈니스적 요구사항을 만족하는 전체 시스템 구조를 정의하는 것.
시스템 아키텍처, 소프트웨어 아키텍처/애플리케이션 아키텍처가 있다.
Spring Framework의 편리함에도 불구하고 Spring 설정이 복잡하기때문에 이를 해결하기 위해 생겨난 Spring Project 중 하나이다.
1. XML 기반의 복잡한 설계 방식 지양
2. 의존 라이브러리의 자동 관리
3. 애플리케이션 설정의 자동 구성
4. 프로덕션급 애플리케이션의 손쉬운 빌드
5. 내장된 WAS를 통한 손쉬운 배포
Spring 구성은 Spring에게 맡기고 비즈니스 로직에만 집중하자!
1개월 회고 쓰기 (2) | 2022.05.23 |
---|---|
Annotation (0) | 2022.05.19 |
D+4 복습(flexbox) (2) | 2022.04.28 |
D+3 복습 (html/css) (0) | 2022.04.27 |
2일 차 배운 내용 복습 (0) | 2022.04.26 |
댓글 영역