백엔드/Spring

Spring 이론 | TIL_146

ran4 2022. 9. 26. 21:24

https://www.youtube.com/playlist?list=PLq8wAnVUcTFUHYMzoV2RoFoY2HDTKru3T

위의 스프링 강의를 듣고 정리한 내용입니다

 


Java EE(Enterprise Edition)

웹 개발을 할 수 있는 자바의 API로 분산형, 기업형 응용 프로그램이다

결합력을 낮추는 DI, DB 트랜잭션 처리, 로그 처리 등의 기능이 존재한다

-> 스프링이 이 기능들을 간편하게 수행한다

 

 

Java SE(Standard Edition)

일반적인 로컬 응용 프로그램이다

개발을 위한 API이다

 

웹 개발을 할 때 Enterprise 에디션을 설치한 적이 없지만 이를 이용한 기능을 사용할 수 있었다 

이는 EE 대신 Spring을 사용하기 때문에 대체된 것이다

 

** EE버전이 유료화가 진행되었기 때문에 스프링을 이용하게 된 측면도 있다

Java SE와 Spring을 사용할 것인지, Java EE를 사용할 것인지는 자유이다

 

 

Spring이란?

자바를 이용한 웹 개발을 할 때 개발을 편하게 할 수 있도록 돕는 프레임 워크이다

-> 라이브러리를 사용하는 것만으로 자바코드만을 사용할 때 보다 간편하게 기능들을 사용할 수 있다

 

 

왜 Spring을 사용하는가?

스프링의 핵심 기능으로 편리성이 생겼기 때문이다

 

 

 

스프링의 핵심 기능

객체를 생성하고 객체를 조립한다

일반적인 소프트웨어 개발에는 필요없지만, 웹 개발을 할 때는 필요한 기능이다 

 

Dependency Injection

- DI

- IoC

 

Transaction Management

- AOP

 

> JDBC 커넥션을 할 때는 DAO 클래스 혹은 서비스 계층을 이용하여

함수는 나누게 되면, 커넥션을 공유하기 어려워진다

-> jdbc 자체의 트랜잭션을 이용하기 어렵다

-> 관리가 어렵다

이를 지원하여 트랜잭션 관리를 편하게 만드는 것이 Transaction Management이다

 

 

핵심기능이 사용되는 곳

  • MVC – DI – 느슨한 결합력과 인터페이스
  • 트랜잭션 - AOP
  • 인증과 권한 - Servlet Filter

 

 

 

느슨한 결합력과 인터페이스

아래의 구조로 이루어진 코드를 수정한다고 가정할 때

 

    DAO A1   A
UI  → Service     
    DAO B1   B

UI -> Service -> DAO(A1 | B1) -> A | -> B

 

수정 방법은 두 가지가 있다 

  1. B1의 소스 코드 자체를 수정한다
  2. B1의 수정코드인 B2를 새로 만들어 코드를 추가한 후 덮어쓴다

 

B1을 수정하지 않고 덮어 쓴 경우 B2 객체를 불러와야 하기 때문에

Service의 코드를 수정해야 한다

-> 결합력이 높기 때문에 직접적으로 불러온 B1의 코드 자체를 수정해야하는 일이 생긴 것이다

 

소스 코드의 수정 없이 바꾸는, 결합력이 낮은 방법을 사용해야한다

-> B1과 B2를 포함하는 B라는 인터페이스를 만들어서 이들을 관리한다

B b = new B1();
service.setB(b);