DI(Dependency Injection)
공부 목표
- DI(Dependency Injection) 알기
Spring 프레임워크
- 프레임 워크는 마치 네이게이션과 같다.
- 길 탐색은 네비가 하고 안내를 들은 사용자는 운전만 하면됨
Spring 에서 제공하는 모듈
- spring-core : DI, IoC 제공
- aop : AOP 구현 기능 제공
- jdbc : DB를 쉽게 다룰 수 있는 기능 제공
- tx : 트랜젝션 관련 기능제공
- webmvc : MVC구현 기능 제공
- 그리고 이러한 모듈을 사용하려면 .xml 파일등에 명시하면 자동으로 라이브러리를 다운받는다.
스프링 컨테이너(IoC)
스프링에서 객체를 생성,조립하는 컨테이너로,
컨테이너를 통해 생성된 객체를 빈(Bean)이라고 부른다.
스프링 파일 구조
- 스프링 프로젝트 Root
- src
- main
- java : .java파일 관리
- resources : 자원관리 폴더 .xml or property file
- pom.xml : 각각의 스프링프로젝트는 pom.xml 파일을 가지고있고 외부 repository에 있는 필요한 library를 내가 개발중인 프로젝트에 쉽게 다운로드 할 수 있게 도와주는 파일이다.
.xml 파일에서 객체 생성
<bean id = "id값" class="패키지명.클래스파일명"/>
Java에서는 new 키워드를 사용해서 객체를 생성했다.
Spring에서는 bean 태그 위에서 자동으로 객체가 생성이 되며
객체가 생성됬다는건 메모리에 로드가 됬다는 이야기이고
스프링에서는 메모리가 로드 된 곳을 스프링컨테이너라고 한다.
bean을 생성했으니 이제 java파일에서 객체를 실행시키려면
1. .xml파일(컨테이너)를 생성
GenericXmlApplicationContext 데이터 타입선언 후 객체생성 및 매개변수로는 .xml경로를 설정하면된다.
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("classpath:apllicationContext.xml");
2.컨테이너 안에있는 Bean 객체를 가져다가 쓴다.(객체생성은 컨테이너가 알아서 한다.)
클래스명 변수명 = ctx.getBean("빈아이디", 클래스명.class);
ex) TranspotationWalk trans = ctx.geBean("tWalk", TranspotationWalk.class);
ctx.close //자바에서는 외부리소스 사용후 반환 해주어야한다.