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
수정 방법은 두 가지가 있다
- B1의 소스 코드 자체를 수정한다
- B1의 수정코드인 B2를 새로 만들어 코드를 추가한 후 덮어쓴다
B1을 수정하지 않고 덮어 쓴 경우 B2 객체를 불러와야 하기 때문에
Service의 코드를 수정해야 한다
-> 결합력이 높기 때문에 직접적으로 불러온 B1의 코드 자체를 수정해야하는 일이 생긴 것이다
소스 코드의 수정 없이 바꾸는, 결합력이 낮은 방법을 사용해야한다
-> B1과 B2를 포함하는 B라는 인터페이스를 만들어서 이들을 관리한다
B b = new B1();
service.setB(b);
'백엔드 > Spring' 카테고리의 다른 글
Spring - 값 형식 DI | TIL_151 (0) | 2022.10.10 |
---|---|
Spring - IoC 컨테이너(ApplicationContext) | TIL_150 (0) | 2022.10.06 |
Spring - DI 지시서 작성(xml) | TIL_149 (0) | 2022.10.03 |
Spring - DI 실습 | TIL_148 (0) | 2022.09.30 |
Spring 이론 - DI, IoC | TIL_147 (0) | 2022.09.28 |