justgo_developer

Spring 기본 개념 및 이해 본문

IT/Spring-boot

Spring 기본 개념 및 이해

다날92 2021. 1. 13. 22:49
728x90
반응형

Spring FrameWork 정의

The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform.

A key element of Spring is infrastructural support at the application level: Spring focuses on the "plumbing" of enterprise applications so that teams can focus on application-level business logic, without unnecessary ties to specific deployment environments.

Spring Framework는 모든 종류의 배포 플랫폼에서 최신 Java 기반 엔터프라이즈 애플리케이션을위한 포괄적 인 프로그래밍 및 구성 모델을 제공합니다.
Spring의 핵심 요소는 애플리케이션 수준의 인프라 지원입니다. Spring은 엔터프라이즈 애플리케이션의 "연결"에 중점을 두어 팀이 특정 배포 환경에 대한 불필요한 연결없이 애플리케이션 수준의 비즈니스 로직에 집중할 수 있도록합니다.

Spring F/W 특징

- 경량 컨테이너

   : 자바의 객체를 Spring이 관리, 객체 생성 및 소멸과 같은 라이프사이클 Spring 컨테이너가 직접 관리

 

- IoC(Invertion of Control: 제어 역행)

   : 객체에 대한 제어권이 개발자가 아니라 Spring Container가 객체 생성부터 소멸까지 관리. 제어권의 관리 주체가         Spring Container로 바뀜

 

일반적인 의존성에 대한 제어권 : OwnerRepository ownerReposiotry = new OwnerRepository();

 

Spring Container가 제어

 

- DI(Dependency Injection: 의존성 주입)

   : 객체를 직접 생성하는 것이 아니라 객체간의 의존성을 외부에서 주입

 

 

※ IoC Container

- ApplicationContext(BeanFactory)라고도 불림

- 빈(Bean)을 만들고 의존성을 엮어주며 제공

 

- ApplicationContext를 이용해 직접 빈을 꺼낼수도 있음.

 

 

※ Bean(빈) : Spring IoC 컨테이너가 관리하는 객체

- 빈으로 등록되는 대상 : @Component, @RestController, @Service, @Repository 등

- 등록 방법 :

1. Component Scan @ComponentScan : Componet 어노테이션이 붙은 걸 빈으로 등록

2. 직접 xml이나 자바 설정에 등록 @Bean을 이용. 단, @Configuration이 붙은곳에서만 사용 가능

※SpringBootApplication 안에 @Configuration  존재

의존성 주입(Dependency Injection)

- @Autowired 어디에 붙이나? 1. 생성자 2. 필드 3. Setter

- 생성자가 하나고 주입받는 객체가 빈이면 @Autowired 생략 가능

 

- AOP(Aspect-Oriented Programming: 관점지향 프로그래밍)

: 흩어진 코드를 한곳으로 모으는 기법

1. 바이트코드 조작

2. 프록시 패턴(Spring에서 사용)

 

 

- PSA(Portable Service Abstraction)

환경의 변화와 관계없이 일관된 방식의 기술 접근 환경을 제공하려는 추상화 구조

: 잘 만든 인터페이스

spring에서 만든 인터페이스는 대부분 PSA

ex) @Transactional, @EnableCaching, Web MVC

 

Spring MVC란?

: Spring에서 제공해주는 MVC 패턴 웹 모듈

 

MVC란?

Model, View, Controller를 분리한 디자인패턴 개념이다.

 

- Model : 데이터

- View : 페이지

- Controller : 요청받고 , 응답 주는 비즈니스 로직

 

 

 

 

728x90
반응형

'IT > Spring-boot' 카테고리의 다른 글

[Spring] Spring Bean 주입 + 팩토리 메소드 디자인 패턴  (0) 2023.10.10
GraphQL(Graph + Query Language) with Spring-boot  (0) 2023.10.05
Spring Data Envers  (0) 2023.10.03
RESTFul API란?  (0) 2021.01.30
Spring Boot 소개  (0) 2020.04.01