여행을 개발하다

의존성 주입4(Dependency Injection) - Java class 사용하기 본문

Spring/Spring

의존성 주입4(Dependency Injection) - Java class 사용하기

yhtragramming 2019. 5. 16. 10:44

안녕하세요!!

 

오늘은 Java Class를 사용하여 Bean을 생성하는 법에 대해 알아보겠습니다.

 

지난 시간까지는 별도의 xml 파일을 따로 만들었지만,

이번에는 Java Class 그 자체로 해결할 수 있는 방식을 소개합니다.

 

역시 어떤 방식을 사용할지는 자유롭게 선택하시면 됩니다.


이번에 소개하는 방식은 별도의 xml 파일을 사용하지 않으므로, 모든 것을 class로 해결합니다.

먼저 3개의 class를 생성할 예정이며, 목록은 다음과 같습니다.

 

1. 학생 정보를 기억할 class(class 이름 : student).

2. student의 객체, 즉 bean 역할을 할 class(xml 파일 대신 사용).

3. bean을 호출하여 출력할 Main class.

 

① 학생 정보를 기억할 class(class 이름 : student)

class는 지난 시간에 사용했던 student class를 재활용하겠습니다.

기본 생성자와 name, age, hobby를 인수로 갖는 또 다른 생성자, getter와 setter도 만들어줍니다.

② student의 객체, 즉 bean 역할을 할 class.

이제는 student의 bean 역할을 할 class를 하나 만들겠습니다. 폴더는 동일하게 'src/main/java'로 지정할 것이며, 이름은 xml과 마찬가지로 'ApplicationCTX'로 정하겠습니다.

 

중요한 것은 여기부터입니다. 이 class는 xml 파일을 대신에 사용할 class입니다.

따라서, DI에 사용할 것임을 별도의 annotation으로 알려주어야 합니다.

 

annotation의 위치는 class 시작 전이며, '@configuration'을 붙여주면 됩니다.

이와 동시 'org.springframework.context.annotation.Configuration'이 import됩니다.

 

이제 class에 bean을 만들어주면 되는데, 여기서도 annotation으로 명시해주어야 합니다.

간단히 bean을 뜻하는 '@Bean'을 적어줍니다.

 

Java에서 bean을 형성할 때는 class의 객체를 만들 때와 동일한 원리로 코딩하면 됩니다.

기본 생성자와 모양이 비슷한데요.

 

'public class명 객체명' 형식으로 적어주시면 되고, 멤버 변수를 setter로 넣어주면 됩니다.

(return null은 오류를 보기 싫어서 제가 임의로 적어놓은 것입니다..ㅎㅎ)

 

먼저 간단히 객체를 하나 만들어주시고요.

 

멤버 변수 초기화를 시작합니다.

hobby의 경우 자료형이 ArrayList이므로, ArrayList를 새로 생성해서 add 메소드로 넣어주시면 됩니다.

 

기타 생성자를 이용한 초기화도 가능합니다.

 

여기까지 Java class로 bean 형성을 완료하였습니다.

 

 

③ bean을 호출하여 출력할 Main class

이제는 bean을 호출하여 출력할 Main class를 하나 만들겠습니다.

 

다만 bean을 호출하는 방식이 xml 파일 방식과 차이가 있습니다.

기존에는 'AbstractApplicationContext' class의 객체를 만들어 사용했었죠?

 

전송중...

사진 설명을 입력하세요.

Java는 xml 대신 annotation을 사용하여 bean을 생성하였으므로,

'AnnotationConfigApplicationContext'의 객체를 생성하여 사용합니다.

 

그리고 bean을 만들었던 class 이름을 인수로 넣어줍니다.

 

그리고 나머지 할 일은 xml 파일을 사용했을 때와 동일합니다.

 

그럼 결과를 하나둘씩 출력해보도록 하겠습니다.

 

결과가 잘 나오네요!^^

 


지금까지 Java Class를 사용하여 Bean을 생성하는 법에 대해 알아보았습니다.

 

감사합니다!

Comments