spring(1)_기초알아야할것.

·2024년 5월 27일
0

spring

목록 보기
1/8
post-thumbnail

⭐서버 공부 1-2일차⭐

서버.. 배워보자공 .

서버 ?

🫡

서버란 클라이언트의 요청을 처리하고 응답을 해주는 과정이 이루어지는 공간이다.
ㅇ.ㅇ 옼키
..

포트

뭘까요 ?

🙄

ip는 컴퓨터를 식별하는 주소이죠 ?
그렇기 때문에 ip를 알면 서버를 찾을 수 있잖아요

하지만 포트까지 알아야 .. 알맞는 서비스 찾기가 가능해집니다.
url,주소창에 있는 것들에 전부 ip와 포트번호가 들어가요. 그러나 확인 불가함
왜냐고? ip랑 포트를 쉽게 알아보기 위해 주소를 붙여놨기 때문이에요

프레임워크

이건 뭘까요 😛

소프트웨어 개발을 쉽게 하기 위한 소프트웨어 개발 환경 을 말합니다

라이브러리

🤗

애플리케이션 개발에 필요한 기능인 클래스, 함수를 모아놓은 코드들이에오 ..
그니까
라이브러리 추가!
하면 복잡스리한 코드들을 직접 작성하지 않아도 원하는 기능을 사용할 수 있는거죠
그렇게 된다면 개발이 편해지고 속도도 fast 해지겠져 ?
※라이브러리는 독립적이어서 서로 영향 주지는 않음

🤍프레임워크는 전체적인 구조를 위해 사용, 라이브러리는 개발과정에서 기능.서비스 구현 위해 사용

스프링 프레임워크 😎

java 기반 엔터프라이즈 애플리케이션 개발을 위한 프레임워크이다.
그니깐.. 애플리케이션의 안정성 서버 성능 보안 등등등등등등 제공해줍니다
~

스프링 부트😀

스프링 프레임워크를 더 쉽고 빠르게 이용할 수 있게 돕는 도구에오 .
(스프링 프레임워크 속에 속한 도구임)

🤍스프링 프레임워크 -- 스프링 부트 차이

일단 개발 환경 설정이 다르거든요
스프링 프레임워크는 개발 환경이 수동이고요
스프링 부트는 거의 모든 기능을 자동으로

그리고요 ?
WAS(web application service)
스프링 프레임워크는 플젝 실행에 필요한 서버를 별도로 다운해야하고요
스프링 부트는 내장형 서버를 제공하여 별고 설정 필요 없어요

빌드 자동화 도구🫡

빌드 자동화 도구는 코드를 컴파일 해주고, 패키징 자동화하는 역할을 하는 도구임요

🍎gradle:
스크립트 파일임
플젝의 종속성, 빌드설정, 플러그인 정의해요
maven과 비교하면 빌드속도가 빠르고 가독성이 좋아요
🍎maven:
pom.xml 파일에 플젝의 종속성, 빌드 설정, 플러그인 정의함



스프링의 특징

IOC 가 뭐야 ?( Inversion of control )

Inversion은 역전, control 은 제어.
그니까 제어의 역전이다.

객체를 개발자가 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져와서 사용하는 것을 의미한다.
스프링에서는 스프링 컨테이너가 객체를 관리하고 제공한다

DI (Dependency Injection)

의존성 주입 ?
이건 제어의 역전을 구현하기 위해 사용하는 방법인데, 말 그대로 의존성 주입이란
다른 클래스에 의존한다 ! 는 뜻이다

의존은 ..
A가 B 없이 동작 불가능한 상황이라고 해보자. 그러면 A 가 B 에 의존적이다 라고 할 수 있다.

주입은 ..
어떤 객체가 필요로 하는 객체를 외부에서 밀어 넣는 것을 의미한다.

DI 왜 써야..?
클래스가 자신의 의존성을 생성자를 호출하여 생성하는 것이 아니라 외부에서 주입 받는다. 즉, 클래스가 구체적인 구현에 의존하지 않고 인터페이스에 의존하게 되었잖아요 . 그래서 의존성 주입의 대상이 바뀌더라도 클래스 자체는 수정할 필요가 없어지는 거임요. 클래스 간의 결합도도 낮아지겠조 ?

그래서..

스프링 컨테이너

스프링 컨테이너는 빈을 생성하고 관리한다
그니까
빈이 생성되고 소멸되기까지 - 까지의 라이프 사이클을 관리한다.. 이거임
@Autowired 어노테이션을 사용해서 빈을 주입받음.

빈(Bean) ?

스프링 컨테이너가 생성하고 관리하는 객체 ! 이다
걍 . 스프링에서 제공해주는 객체라고 생각하는 것이 편하다

빈을 등록하는 방법

  • xml 파일 설정 (spring framework)
  • 어노테이션 이용해서 추가(spring boot)

IOC, DI 의 장점

  • 객체 간 결합도 감소
    : 스프링컨테이너를 통해 참조 받는 방식.. 이니깐 객체간의 결합도가 감소하겠죠?
    그러면 수정 시 영향을 덜 받게 되어용 ..

  • 테스트 용이성
    : DI 를 통해 mock객체를 주입가능. 그래서 단위 테스트가 편해진다
    mock 객체-> 모의 객체 .. 머 그런거

  • 유연성.확장성
    : DI 를 이용하면 필요 정보를 외부에서 주입받기 때문에 유연성🆙
    +
    환경설정쉽게 변경,.. 확장성도🆙

  • 재사용성 🆙
    : 스프링 컨테이너가 빈을 관리하다보니깐 다양한 곳에서 재사용 편리함.
    코드 중복⏬ + 중앙에서 객체를 쉽게 관리 가능

AOP ?? (Aspect Oriented Programming)

관점 지향 프로그래밍 이다.
->프로그래밍에 대한 관심을 핵심 관점 + 부가 관점 을 나눠서 관심 기준으로 모듈화하는 것.
ex.
핵심관점: 게시글 작성, 회원가입
부가 관점: 데이터베이스 연결, 로깅

AOP vs OOP

🍎OOP(Object-Oriented Programming): 데이터와 기능을 객체 단위로 묶어서 모듈화,상속,다형성을 통해 코드를 재사용.

🍎AOP: 공통된 부가 관점을 모듈화해서 비즈니스 로직과 분리.
모듈화 해놓은 부가 관점은 여~러 모듈에서 재사용 가능

profile
어리둥절 빙글빙글 돌아가는 코딩세상~

0개의 댓글