본문 바로가기
[ Developer ]/Spring Framework

[Spring] 스프링 의존성 주입 실습 DI 실습

by 김현섭. 2016. 6. 8.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
DI 실습

# Project 생성 후 세팅

Spring Project 생성


프로젝트 생성 후에 next를 눌러서 다음과 같은 폴더들을 생성해 준다


그리고 next하고 Content directory를 바꿔 준다


다음과 같이 폴더가 생긴것을 볼 수 있다
Webcontent 자리에 src가 생긴것을 볼 수 있다
jsp를 바로 볼 수 없고 스프링을 통해서만 볼 수 있다
Spring을 사용하기 위해 pom.xml을 생성해야 한다

프로젝트를 오른쪽 마우스를 클릭하고 Convert 시킨다



JRE System Library와 pom.xml이 생긴것을 볼 수 있다
그러면 JRE를 jdk로 변경해준다

그리고 난 후 pom.xml을 보면 다음과 같다



위와 같은 화면에서 Dependencies와 pom.xml을 자주 사용하게 된다

dependencies는 프로젝트에 사용되는 라이브러리를 추가해준다
pom.xml을 앞의 탭 부분들을 수동으로 정의하는 부분이다


아래와 같은 소스에서 build 끝난 부분에서 공간을 만들어 준다
그리고 난 후 spring.io로 접속한다 그리고 난 후 PROJECTS 메뉴로 접근한다
SPRING FRAMEWORK을 누른다


Quick Start를 누른면 다운로드할 수 있는 코드가 있다


위의 소스를 복사한 후 pom.xml에 붙여준다


추가가 된 모습이다
그리고 난 후 오른쪽 아래 상태 표시줄을 보면 


아래와 같은 상태인데 될 때까지 기다린다


그러면 프로젝트에서 Maven Dependencies가 생긴 것을 볼 수 있다


의존 라이브러리가 모두 추가된 모습을 볼 수 있다

# DI Coding
기존의 작성했던 src은 src/main/java에 생성하면 된다
LoginBiz와 LoginDAO 인터페이스를 생성해서 public boolean login();이라는 추상 메소드를 생성한다

그리고 구현 클래스인 LoginBizImpl을 생성한다


DAO는 생성자로 선언하지 말고 setter만 만들어 준다



아래와 같이 변경된다


그리고 DAOImpl도 생성해 준다


그리고 메소드를 아래와 같이 변경해 준다


# 구조
  • Main -> LoginBiz 호출

  • LoginBiz -> LoginDAO 호출
    • LoginBizImpl

  • LoginDAO
    • LoginDAOImpl


우선 Main Class를 생성한다 이제 Class를 생성해줄 xml을 생성해야 한다


src/main/resources에서 new -> Spring Bean Configuration File을 생성한다


Java를 제외한 모든 파일들은 src/main/resources에 들어간다

생성된 모습 


이곳에서 BizImpl과 DAOImpl을 생성한다


위와 같이 작성 후 LoginDAO 뒤에서 Ctrl + Space를 누르면 자동으로 변환해준다


위의 구문은 new 키워드를 이용해서 객체를 만드는 것과 같은 기능을 한다
위와 같이 BizImpl도 생성한다


loginBizImpl를 이용해서 login() 메소드를 실행하면 NullPointerException이 발생한다
setLoginDAO가 실행되어야 LoginDAO 부분이 실행되어 생성된다

set을 실행시키기 위해서 property로 정의해줄 수 있다


name과 ref에서 Ctrl + Space를 누르면 자동완성 시킬 수 있다


property는 setter와 같은 역할을 하고 ref는 파라미터다

ref자리에는 2가지가 들어갈 수 있다
  • ref
    • 그외 나머지
  • value
    • String을 포함한 Primitive Type

ref="loginDAO"는 위의 bean에서 정의한 loginDAO이다


bean이 모두 객체가 된다고 볼 수 있다
위와 같이 정의하면 스프링이 객체로 정의를 해주고 가져다가 쓸수 있게 된다

그리고 메인에서 xml을 실행시키기 위해 정의를 한다


그리고 Biz를 선언해주기 위해 ctx.getBean을 사용한다



캐스팅을 해주면 완료된다

결과를 보기 위해서는 Java Application으로 실행을 해준다



위와 같이 결과를 볼 수 있다

# 구동 원리
  • applicationContext.xml에 있는 요소를 bean Context라고 부르고 각각에 필요한 객체를 적는다
  • 그 후 AbstractApplicationContext에서 위의 xml을 실행 시키면 객체화 된다
  • 객체화가 된 요소들은 Bean Container라는 곳에 저장이 된다
  • Bean Container에 있는 요소들을 꺼내오는 메소드가 getBean("변수명")이다
  • 적은 변수명을 가진 요소를 검색한 후 발견 시에 리턴 시킨다

굳이 의존성이 필요없는 항목들은 new 키워드를 이용해서 선언한다