DevBoi

[Spring] DI 관련 ApplicationContext 설정 본문

Develop/[Spring]

[Spring] DI 관련 ApplicationContext 설정

HiSmith 2022. 2. 23. 00:15
반응형

DI 관련 그리고 스프링 설정 관련, ApplicationContext 인터페이스를 구현한 구현체들이 여럿 있다

 

각각은 해당 context를 구현한 위치에 따른 정보 전달에 따라서 다르게 사용한다 (FIleSystem은 컴퓨터 절대 경로, xmlWeb은 특정 Url을 통해서 해당 config 파일을 받아옴 등등)

 

무튼 기본 java project로 생성 했던 프로젝트를

프로젝트 오른쪽 버튼 configuration > convert to Maven project를 하게되면

기본 자바 프로젝트 > 메이븐 프로젝트로 변경이 된다.

변경이 되면, Maven 방식의 pom.xml이 생성이 되고 이런 프로젝트 구조에서 pom.xml에서 디펜던시를 추가한다.

(add로 maven 관련 검색이 안되면, show view -> maven -> global repo 에서 index rebuild를 해준다)

https://mvnrepository.com/

일단 수동으로 ㅋㅋ..

 

maven Repo 에서, spring context를 받고, pom.xml로 설정을 해준다.

 

그리고 config, 즉 applicationContext설정 파일 내용을 설정한다.

나는 LecsExam이라는 빈과, 해당 빈을 property로 set하는 examconsole을 생성했다.

 

Main에서 이렇게 되면, ApplicationContext로, 설정 파일을 가져오고,

Examconsole이라는 클래스를 구현한 구현체를 들고와서, 사용할수 있다.

즉 소스코드 변경없이 설정 파일로 프로젝트의 사용 클래스에 대한 변경이 가능하다.

ExamConsole에 대한 걸 가져오는 것은 클래스를 넘기게 되면, 가장 적절한 것을 선택해서, 해당 구현체를 가져온다.

즉 class로 찾게 되면 해당 bean id가 아닌 class값을보고 가져오게 된다.

만약에, Exam이라는 인터페이스를 사용하고 id로 들고오고싶다면? 해당  타입 캐스트를 해주고, 받아와서 사용하면 된다.

 

 

외부에서 Config 파일을 설정하고, 해당 설정 파일에 대한 변경만으로 인터페이스를 사용함으로써, 소스코드 변경없이 변경 가능하다는 것을 볼수 있다.

반응형

'Develop > [Spring]' 카테고리의 다른 글

[Spring] Autowired 어노테이션의 장점  (0) 2022.02.25
[Spring] DI 관련 예제  (0) 2022.02.23
[Spring] DI 구현 예제 및 Spring 역할 이해  (0) 2022.02.21
[Spring] IOC 란?  (0) 2022.02.21
[Spring] DI란?  (0) 2022.02.21