성장 일기/쌍용교육센터 / / 2023. 5. 15. 09:54

0515/DI, 의존성 주입 종류

쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 
https://github.com/2jaehoon/sangyongSpring에 올려두었습니다.
https://github.com/2jaehoon/SpringDITest

 

Spring DI (약결합)

  - 의존성 주입하고, 객체를 찾고 얻기 위해 Spring Container를 사용

  - 실행하기 위해 별도의 Container가 필요하지 않다. 

  - 설정 파일 방식, annotation 방식으로 의존성 주입에 사용할 정보를

     Spring Container에 설정해 준다.
  - 설정 파일에 등록되어 Spring Container가 생명 주기(객체를 생성하고 소멸시키는 일)를

    관리하는 클래스들을 bean이라고 한다.
  - Spring Container가 생성되면 설정 파일에 있는 bean들을 singleton으로

    하나의 객체를 생성하고 사용한다.

 

의존성 주입

 

* 생성자 의존성 주입

<bean id="아이디" class="패키지명.클래스명">
<constructor-arg ref="의존성주입할 객체"/>
</bean>

 

* method 의존성 주입


* 문자열 Injection


* 정수를 injection


* JCF(Java Collection Framework) injection

  - java.util.List injection

  - java.util.Map injection


Singleton pattern 적용 클래스 객체화


annotation 방식

  - 설정용 xml에 의존성 주입 설정( <bean> )을 하지 않고 사용하는 방식
  - 의존성 주입 관계를 한 눈에 파악하기 힘들다.
  - 대규모 프로젝트에 적합하지 않고, 소규모 프로젝트에 적합한 방식
  - spring context가 필요
  - Spring Container가 지정된 패키지를 component-scan하여 
    클래스를 찾고 annotation대로 의존성 주입하여 사용한다.

 

* /WEB-INF/spring/appServlet/servlet-context.xml에 설정

  1. context가 xml:schemaLocation에 설정

  2. annotation - config 설정

<context:annotation-config/>

 

  3. Spring Container가 component를 scan할 패키지를 설정

<!-- 예시 -->
<context:component-scan base-package=“패키지명”/>
<context:component-scan base-package=“패키지명.*”/>

<context:component-scan base-package=“kr.co.sist”/>
<context:component-scan base-package=“kr.co.sist.*”/>

 

* 사용 순서

  1. Component scan할 클래스위에 (bean) @Component annotation 설정
  2. 의존성 주입 받을 클래스(인터페이스)  위에 @Autowired를 설정

 

 

'성장 일기 > 쌍용교육센터' 카테고리의 다른 글

0517/MyBatis에서 CRUD 사용  (0) 2023.05.25
0516/MyBatis 설정, properties  (0) 2023.05.17
0512/Spring, 강결합, 약결합  (1) 2023.05.15
0511/AJAX  (0) 2023.05.15
0510/include, session, cookie, fileUpLoad  (0) 2023.05.10
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유