기억의 DataBase

xml을 통한 IoC/DI 본문

Spring

xml을 통한 IoC/DI

Zester; 2019. 3. 21. 18:17
  • IoC 실습


메이븐 프로젝트 생성후 플러그인 추가 > 메이븐 업데이트


Bean Class 생성

Bean클래스의 3가지 특징
(Container가 인식할 수 있도록 규칙을 지킬 것!)

1.기본생성자를 가지고 있음
2.필드는 private하게 선언
3.getter, setter 메소드를 가짐
4.getName() setName() 메소드 :  name

프로퍼티(property)라고 함 (용어 중요)



properties안의 속성은 상수처럼 불러서( ${} ) 사용가능

dependency로 spring-context(Spring의 API들이 있음)를 불러 라이브러리에 추가


src/main 아래에 resources라는 폴더를 만들고 applicationContext.xml이라는 file을 생성
(이름을 Container가 제한하는 것은 아니지만, 공동작업을 위한 관례를 지킬 것)


applicationContext.xml 파일 작성
(id는 getBean() 메소드로 호출할 때의 이름, class는 패키지까지 모두 적어줘야 Container가 인식)


xml에 설정된 Bean을 객체화하여 사용하는 Class

classpath:"xml파일명" ( : 앞뒤로 공백x 주의)

Spring은 싱글톤 패턴으로 객체를 생성하므로, 
같은 Bean을 가지고 복수의 객체를 만들어도 1개만 Memory에 올라감

  • DI 실습(의존성 주입)



기존 객체의 생성방법 (실행 Code를 통해서 객체를 생성)


propertynamesetter와 getter의 이름을 의미(setEngine() > engine)
ref파라미터 객체를 의미하는 것으로 위에서 생성한 Engine(e)를 넣음(객체 주입)

classpath는 생략가능

실행코드에서는 Engine 객체생성에 대한 고려없이도,
Car 객체만을 생성하여 Engine이 필요한 run() 메소드를 사용

추후 Engine이 변경되어도 실행코드를 건드리지 않고, xml 파일 변경만으로 가능

'Spring' 카테고리의 다른 글

Spring MVC  (0) 2019.03.25
Spring JDBC  (0) 2019.03.22
Java Config를 통한 IoC/DI  (0) 2019.03.21
IoC와 DI  (0) 2019.03.21
Spring Framework  (0) 2019.03.21
Comments