-
의존성 주입이란? (DI)프로그래밍/Spring 2018. 6. 18. 22:28
스프링에서는 중요한 개념들이 존재합니다
그중 DI는 의존성 주입이라고 불리는 개념인데 객체를 직접 생성하는 것이 아닌 외부에서 객체를 주입시켜 사용하는 방식입니다
먼저 의존성이란 무엇일까요?
간단히 생성자 호출 즉 new 연산자 입니다
Spring.class
public Spring(){ new Java();
}
위의 코드는 Spring이라는 클래스 내에서 Java클래스를 호출합니다
즉 Spring 클래스가 Java클래스를 의존한다고 말을하는 것 입니다
Java java = new Java();
Spring spring = new Spring(java);
간단한 위의 코드를 예시로 들어보면 java클래스를 생성하고 Spring 클래스를 생성할때 매개변수로 java를 넣어줍니다
이때 Spring 클래스에서 java클래스를 주입한다고 말을하는 것이며 이런식으로 주입을 하게된다면 어떤 점이 좋아질까요?
바로 코드의 단순화와 종속적이던 코드의 수를 줄일수가 있습니다
그렇다면 Java에서의 DI말고 Spring에서 DI를 적용하는 방법에 대하여 알아보도록 하겠습니다
Spring에서는 처음 객체를 생성하고 관리를 할때 xml파일을 사용합니다
<bean id = "java" class = "PackageName.Java"></bean>
<bean id = "spring" class = "PackageName.Spring"></bean>
위의 예시를 xml로 설정한다면 이렇게 설정이 되겠네요
id 값은 변수명 class는 이 객체를 어느 클래스를 통해 생성해주는지 지정해주는 속성이라고 생각하시면 될 것 같습니다 :)
ApplicationContext context = new FileSystemXmlApplication("xmlpath");
Java java = (Java) context.getBean("java");
Spring spring = (Spring) context.getBean("spring");
위의 코드 처럼 ApplicationContext를 이용해서 Bean을 불러오는 코드입니다
그러나 점점 Spring은 발전해나가죠 여러가지 객체가 늘어나고 xml에서 객체를 설정하는게 점점 많아지는걸 방지하기위해 새로운 방식이 나왔는데
바로 흔히들 아시는 @!!! 바로 어노테이션을 이용해서 개발이 가능합니다
@Autowired
Java java
@Autowired
Spring spring
이런식으로 코드의 갼략화가 가능해집니다
아래의 그림은 어노테이션을 이용한 Bean을 할당해주는 순서도입니다
출처 : http://limmmee.tistory.com/14
DI를 처음 접해보는 개념으로 전에는 개발자가 일일이 다 생성하고 관리를 했다면 DI를 이용함으로써 컨텍스트에서 객체를 불러와서 사용만하는 식의
코드 작성법은 아직 좀더 공부와 더 많은 활용방법을 알아봐야 할 것 같습니다
'프로그래밍 > Spring' 카테고리의 다른 글
Spring boot란? (0) 2018.05.13 DAO? DTO? VO? (0) 2018.04.16