반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
11-07 11:40
관리 메뉴

ImJay

[Java Spring] 1-13. 컴포넌트 스캔과 자동 의존관계 설정 본문

Java Spring/스프링 입문

[Java Spring] 1-13. 컴포넌트 스캔과 자동 의존관계 설정

ImJay 2023. 1. 30. 13:05
반응형

[Java Spring] 1-13. 컴포넌트 스캔과 자동 의존관계 설정


1. 이제까지 만든 서비스와 리포지토리를 사용하려면 컨트롤러와 뷰가 필요하다.

 

2. 우리가 만들 멤버 컨트롤러는 멤버 서비스를 통해 기능들을 사용해야 한다. 이러한 경우를 멤버 컨트롤러가 멤버 서비스를 의존한다고 표현한다.

 

3. src > main > java > hello.hellospring > controller > 새로 만들기 > java 클래스

 

4. MemberController 클래스 생성

 

5. 컨트롤러라는 어노테이션을 통해 스프링에서 컨트롤러라는 객체를 생성하는데, 이를 스프링 컨테이너에서 스프링 빈이 관리된다고 표현한다.

 

6. 기존에 작성했던 로직은 순수한 자바 코드이기 때문에 스프링에서 불러올 수 있는 방법이 없다. 따라서 아래와 같이 어노테이션을 추가해주어야한다.

 

7. 위 둘을 연결시켜주기 위해 컨트롤러의 생성자에도 자동으로 연결해주는 Autowired 라는 어노테이션이 필요하다.

 

8. 어플리케이션을 빌드하여 정상적으로 작동하는지 확인해본다. 정상적으로 작동된다면 연결이 정상적으로 이루어진 것이고, 의존관계가 설정되었다라고 표현할 수 있다!

 

9. 상기 과정을 통해 우리는 아래 그림과 같이 컨트롤러, 서비스, 레포지토리를 상호연결하는데 성공하였다.

 

10. 스프링 빈을 등록하는 방법에는 두가지가 있는데, 지금 우리가 수행한 방법은 컴포넌트 스캔과 자동 의존관계 설정 방법이다.

왜 컴포넌트라고 부르냐면, Controller, Service, Repository 어노테이션의 상위 계층이 Component 어노테이션이기 때문이다.

 

11. 컴포넌트 스캔의 대상은 해당 패키지의 하위 패키지들이다. 따라서 다른 패키지에서 컴포넌트 어노테이션을 선언해도 동작하지 않는다.

 

12. 스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록한다(유일하게 하나만 등록해서 공유한다) 따라서 같은 스프링 빈이면 모두 같은 인스턴스이다. 설정으로 싱글톤이 아니게 설정할 수 있지만, 특별한 경우를 제외하면 대부분 싱글톤을 사용한다.

반응형
Comments