[BACK-END]/[SPRING]

Spring 개념 및 DI

지기음 2023. 4. 18. 21:09

SpringFramework의 구조 

1. POJO (plain old java object)

  • 특정 환경이나 기술에 종속적이지 않은 객체지향 원리에 충실한 자바 객체
  • 테스트하기 용이하며, 객체지향 설계를 자유롭게 적용할 수 있다. 

 

 

2. PSA (portable service abstraction)

  • 환경과 세부기술의 변경과 관계없이 일관된 방식으로 기술에 접근할 수 있게 해주는 설계 원칙 
  • 트랜잭션 추상화 (ex, 데이터베이스에 관계없이 동일하게 적용할  수 있는 트랜잭션 처리방식)

 

 

3. loC/DI (dependency Injection)

  • DI는 유연하게 확장 가능한 객체를 만들어 두고 객체 간의 의존관계는 외부에서 다이나믹하게 설정 

 

 

4. AOP (aspect oriented programming)

  • 관심사의 분리를 통해서 소프트웨어의 모듈성을 향상 
  • 공통 모듈을 여러 코드에 쉽게 적용가능 

 

 

IoC ( Inversion of Control, 제어의 역행)

  • 객체지향 언어에서 Object간의 연결 관계를 런타임에 결정 
  • 객체 간의 관계가 느슨하게 연결됨 
  • loC의 구현 방법 중 하나가 DI

 

 

IoC 유형 

1. Dependenct Lookup 

  • 컨테이너가lookup context를 통해서 필요한 Resource나 Object를 얻는 방식

 

 

2. DI

  • Object에 lookup 코드를 사용하지 않고 컨테이너가 직접 의존 구조를 Object에 설정할 수 있도록 지정해 주는 방식 

 

 

Spring DI Container 

  • Spring DI Container 가 관리하는 객체를 빈이라 하고 이 빈들의 생명주기를 관리하는 의미로 빈팩토리라고 한다.
  • bean Factory에 여러 가지 컨테이너 기능을 추가하여 ApplicationContext (interface)

 

 

IoC 개념 

  • 객체 제어 방식 ( 객체 생성을 Container에게 위임하여 처리)
  • 장점 : 객체 간의 결합도를 떨어뜨릴 수 있음 

 

 

빈의 생성 범위 

 

 

1. 싱글톤 : default 값, 하나의 인스턴스 빈만 생성 

2. prototype : 컨테이너에 빈을 요청할 때마다 새로운 인스턴스 생성 

3. request 

4. session

 

 

빈설정 방법 

1. XML 문서 

<bean id = "memberDao" class="com.test.hello.dao.MemberDaoImpl"/>

 

2. Annotation

@Component
public class MemberServiceImpl implements MemberService{
	@Autowired
    private MemberDao memberDao;
 ...
}

어노테이션으로 빈을 설정 할 경우 반드시 component-scan을 설정해야 한다. 

 

Annotaion

1. Repository

2. Service

3. Controller

4. Component : 일반적인 경우 

'[BACK-END] > [SPRING]' 카테고리의 다른 글

REST API와 Spring 실습  (0) 2023.04.26
Spring MVC  (0) 2022.12.16
Spring bean  (0) 2022.12.14
Spring 백엔드 기초 중 기초 [회원관리]-(2)  (0) 2022.12.07
Spring 백엔드 기초 중 기초 [회원관리]-(1)  (0) 2022.12.07