<CodeStates> Spring Framework

한주영·2023년 3월 31일
0

코드스테이츠 학습

목록 보기
14/24

Framwork란?

소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게 일련의 협업화된 형태로
클래스들을 제공하는것

의미 =>뼈대, 틀 ,구조

FrameWork를 사용하면 좋은점(장점),단점

-효율적으로 코드를 작성할수있다
=>개발자가 애플리케이션의 핵심로직을 개발하는것에 집중할수있도록 해줌.

정해진 규약에있어 애플리케이션을 효율적으로 관리할수있다
=> 유지보수가 필요한 경우 더빠르고 쉽게 문제점을 파악할수있음.
코드를빠르게 파악하고 수정하기용이함.

단점?
-사용하고자 하는 프레임워크에 대한 학습이 필요
-자유롭고 유연한 개발이 어려움
=>규약을 벗어나기 쉽지않고 구조화돠있기 때문에

Library와 FrameWork의 차이?

library는 애플리케이션을 개발할때 필요한 기능을 미리 구현해놓은 집합체

FrameWork가 애플리케이션의 핵심 로직을 개발하는것에 집중할 수있도록
해주는 것이라면 , library는 애플리케이션 코드이므로
개발자가짜놓은 코드내에서 필요한 기능이있다면 호출해서 사용
애플리케이션의 흐름의 주도권이 개발자에게 있음

Spring Framework

Java 기반의 웹 애플리케이션 개발을 위한 프레임워크
객체 지향 설계원칙에 잘 맞는 재사용과 확장이 가능한 개발 프레임워크

POJO (Plain Old Java Object)

PO부분 java로 생성하는 순수한 객체
JO부분 객체지향 프로그래밍

POJO프로그래밍이란?
POJO를 이용해서 프로그래밍 코드를 작성한다는 의미
java나 java스펙(사양)에 정의된 것 이외에는 다른 기술이나 규약에 얽매이지않아야한다

의존성주입(DI)

A,B두개의 클래스파일을 만들어서 A클래스에서 B클래스의 기능을 사용하기위해
B클래스의 메서드를 호출하는 상황
=> A클래스가 B클래스의 기능을 사용할때 A클래스는 B클래스에 의존한다

ex)커피를 주문하는 애플리케이션을 개발하는 상황일때

MenuController=> 클라이언트의 요청을 받는 엔드포인트 역할
MenuService=>메뉴컨트롤러클래스가 전달받은 요청을 처리하는역할

클래스끼리 사용하고자 하는 클래스의 객체를 생성해서 참조하게되면 => 의존관계가 성립

생성자를 통해서 어떤 클래스의 객체를 전달받는것 =>의존성주입
=> 클래스의 생성자로 객체를 전달받는 코드가있다면
'아 객체를 외부에서 주입받고 있구나, 의존성 주입이 이루어지고있구나' 로 알면됨!

--의존성주입을사용할때
클래스에서 외부클래스 객체를 생성하기위한 new키워드 여부 결정
하지만 애플리케이션 코드 내부에서 직접적으로 new를 사용할 경우 객체지향설계의 관점에서 중요한문제가 발생할수있음..!

new키워드를 사용하여 객체를 생성하게되면 참조할 클래스가 변경될경우에 , 이 클래스를 사용하는 모든 클래스를 수정할수밖에 없게됨!=> new키워드를 사용해서 의존 객체를 생성하게될때 강하게 결합되있다고 표현한다

클래스들간의 강한 결합은 피하고 느슨한 결합이 필요하다!
느슨하게 만드는 대표적인 방법은 인터페이스 사용 !

AOP(Aspect Oriented Programming)

관점 지향 프로그래밍

애플리케이션에서 필요한 기능중에서 공통으로 적용되는 공통 기능

애플리케이션의 핵심 업무 로직에서 로깅이나, 보안 , 트랜잭션과 같은 공통 기능 로직들을
분리하는것

사용이유?

코드의 간결성유지
객체 지향 설계 원칙에 맞는 코드 구현
코드의 재사용

PSA(Portable Service Abstraction)

추상화된 상위 클래스를 일관되게 바라보며 하위클래스의 기능을 사용하는 것.

애플리케이션에서 특정 서비스를 이용할때, 서비스의 기능을 접근하는 방식 자체를 일관되게
유지하면서 기술 자체를 유연하게 사용할수있도록 하는 것을 일관된서비스(PSA)라고 한다

필요한 주된이유?
어떤 서비스를 이용하기위한 접근 방식을 일관된 방식으로 유지함으로서 애플리케이션에서
사용하는 기술이 변경되도라도 최소한의 변경만으로 변경된 요구사항을 반영하기 위함이다

profile
백엔드개발자가 되고싶은 코린이:)

0개의 댓글