본문 바로가기
spring

Spring 용어 정의

by 김선지 2024. 2. 27.

강한결합 (coupling):
 비즈니스 로직과 실행기가 강하게 결합됨
 (GameRunner이 특정 game인 MarioGame과 강하게 결합, 그렇기에 로직을 수정하려면 품이 많이 듦)

그렇기에 비즈니스 요구사항, 프레임워크, 코드 모두 변하기 때문에 최소한의 코드만 바꾸어 기능을 변경할 수 있는
 느슨한 결합 (Loose coupling) 으로 해야함.
(interface 구현)

ex. (Games interface) <= 게임 실행기

(Mario game, SuperContraGame) <= 게임 칩. 




spring container == spring context == IOC container

클래스를 입력으로 받아 러닝 시스템을 만드는 것.

IOC container의 인스턴스가 spring container
: spring Bean 및 수명주기 관리하는 것

스프링 어플리케이션의 기본 동작
자바 클래스 만들고 => 이를 구성 configuration으로 선언하여 => IOC 컨테이너를 설정한다.
즉, configuation은 스프링 컨테이너를 구성하고 => 런타임 시에 이 컨테이너(spring container)가 Bean을 생성하고 관리한다.

@Component
 클래스에 추가하면 해당 클래스의 인스턴스는 스프링 프레임워크가 관리함

@Dependency: MarioGame은 GameRunner의 Dependency이다. (Runner에서 이용하는 class를 주입해주는 것)

@ComponentScan: 스프링 프레임워크가 컴포넌트가 어디에 있는지 인식할 수 있게 하는 annotation




의존성 주입: 

어플 실행하면 -> 컴포넌트 스캔 -> 이에 대한 dependency가 무엇이 있는지 확인 -> dependency 와이어링
==

 bean 확인, dependency 확인 -> wiring

Spring bean: 스프링 프레임워크가 관리하는 모든 객체
IoC container:  bean의 생명주기와 dependency의 생명 주기를 관리하는 컨테이너
(applicationContext(복잡한 기능), BeanFactory(단순한 기능, 현재는 거의 사용 안한다고 한다))

AutoWiring: Spring bean에 대한 Dependency를 wiring하는 과정 전체
 (spring bean에 대해 필요한 의존성을 검색 (dependency 주입이 있다면 autoWiring))

         

      @Component         @Bean
where           자바 클래스 모두에 사용 가능 Spring Configuration class안의 method에 일반적으로 사용
ease of use annotation만 추가하면 됨      코드 전체가 필요함.
Autowiring  field, setter constructor injection 가능 method call or method parameters
who create?  Spring Framework          custom business logic
추천   어플리케이션에서 컴포넌트 클래스를 만들고 이에 대한 Bean을(인스턴스) 만들 때     custom business logic  제 3자 라이브러리에서 bean을(인스턴스) 만들때

 



레이어 계층


웹 레이어
비즈니스 레이어
데이터 레이어

 


각 레이어는 아래쪽에 있는 레이어에 의존적이다. (비즈니스 레이어의 클래스는 데이터 레이어와 통신한다.)
그래서 데이터 레이어의 클래스는 비즈니스 레이어 클래스의 의존성이라고 한다.

 




Spring Bean Scopes (유효 범위)
 - Singleton : 하나의 IoC container에 하나의 instance 만 있다. (Spring IoC container 에 대해 동일한 인스턴스(빈) 이용하고 싶으면 (default))// Java SingleTon(JVM ) == Spring Singleton (IoC container)
 - Prototype : 하나의 IoC container에 여러 객체 인스턴스가 있을 수 있다.

- Request: 하나의 HTTP 요청에 대해서 하나의 instance만 가짐
- Session: 유저 HTTP 세션 당 하나의 객체 인스턴스만 가짐 (한 사용자의 여러 요청은 동일 세션에 속할 수 있음)
- Application: 전체 웹 애플리케이션 당 1개의 객체 인스턴스 가짐
- Websocket: 하나의 웹 소켓 인스턴스 당 하나의 객체 인스턴스 가짐

 

 

대부분은 이해했는데 완벽히 이해하지는 못했다. 좀 더 공부하던가 해야겠다.