Purple Bobblehead Bunny

Backend/SPRING

[Spring] 스프링 프레임워크, Spring FrameWork

준영어린이 2022. 7. 11. 22:56

 

🚀 Spring

 

 

흔히 spring이라고 부르지만 정확한 명칭은 스프링 프레임워크(Spring Framework)이 정확한 표현이다.

  • 자바(JAVA) 플랫폼을 위한 오픈 소스(Open Source) 어플리케이션 프레임워크(FrameWork)
  • 자바 개발을 편리하게 해주는 오픈 소스 어플리케이션 프레임워크
  • 자바 개발을 위한 프레임워크로 종속 객체 생성, 조립해주는 도구
  • 자바로 된 프레임워크로 자바 SE로 된 자바 객체(POJO)를 자바 EE에 의존적이지 않게 연결해주는 역할

🚀 스프링 특징                             

1) 경량 컨테이너로서 자바 객체를 직접 관리

    각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.


2) 스프링은 POJO(Plain Old Java Object) 방식의 프레임워크.

   J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리

   등을 지원하기에 용이하고 객체가 가볍다.


3) 스프링은 제어 반전(IoC : Inversion of Control)을 지원.

   컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.


4) 스프링은 의존성 주입(DI : Dependency Injection)을 지원

   각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.


5) 스프링은 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)을 지원

  트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.


6) 스프링은 영속성과 관련된 다양한 서비스를 지원

   iBatis나 Hibernate 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.
7) 스프링은 확장성이 높음

   스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러           리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.

 

                                      스프링 프레임워크 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

 

스프링 프레임워크 - 위키백과, 우리 모두의 백과사전

 

ko.wikipedia.org

 


🚀 Spring 필수 개념

  • Controller
    • 클라이언트의 요청을 받음
    • 요청에 대한 처리는 서비스에게 전달
    • 클라이언트에게 응답
  • Service
    • 비즈니스 로직을 처리
      • 비즈니스 로직은 서버에서 사용자의 요구사항을 처리하는 것을 의미함
    • DB 정보가 필요할 때는 Repository에게 전달
  • Repository
    • DB 관리(연결, 해제, 자원 관리)
    • DB CRUD 작업 처리

흐름

 

🚀 DI(Dependency Injection) 의존성 주입 

 

하나의 클래스 생성자 변화가 다른 클래스에 영향을 준다 

중복 코드를 해결하기 위해 각 객체를 한 번만 생성 하고, 생성된 객체가 필요할 때 사용 할 수 있다.

이렇게 하나의 객체에서 다른 객체가 필요할 때, 객체를 직접 생성하지 않고, 이미 생성되어 있는 객체를 가져오는 작업을 

'(의존성 주입)Dependency Injection' 이라고 한다.

 

사용자가 자신이 필요한 객체를 생성 후 사용하는 것이 일반적이지만, 반대로 필요한 객체를 요청을 하면 어떻게 만들어졌는지 알 필요가 없는 객체를 사용할 수 있게 되는데, 프로그램의 제어 흐름이 뒤바뀐다는 의미에서 

'제어의 역전(loC : Inversion of Control)' 이라고도 한다.

 

 

🚀 리팩토링

기능 상의 변경 없이 내부 구조를 개선하는 것을 의미

개발자들 사이에서 코드를 공유 할 때, 읽기 편하고 쉽고 빠르게 파악할 수 있다는 특징을 가지고 있다.

 

 

 

🚀 스프링 loC 컨테이너

DI를 사용하기 위해서는 객체 생성이 되어야 한다. 이 때 스프링 프레임워크가 객체 생성과 관리 역할을 대신 한다.

  • 빈(Bean) : 스프링이 생성해주는 객체
  • 스프링 loC 컨테이너 : 빈(Bean)을 모아둔 통

🚀 Annotation(어노테이션)

스프링 loC에 빈을 등록하고 사용하는 방법

(추 후에 블로그에 자세히 다룰 예정)

  • Controller, @RestController ......
  • @Service, @Component .....
  • @Repository, @Bean, @Autowired .......

'Backend > SPRING' 카테고리의 다른 글

[Spring]MyBatis  (0) 2022.08.01
[Spring] Connection Pool  (0) 2022.08.01
[Spring] DB OJDBC  (0) 2022.08.01
[Spring] Logj4  (0) 2022.08.01
[Spring] Lombok  (0) 2022.07.29