inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

자바 코드로 직접 스프링 빈 등록하기

Controller 자바코드로 (@Configuration)으로 스프링빈등록.

861

염재선

작성한 질문수 8

0

안녕하세요! 강의를 너무잘보고있습니다 

다름이아니라 강의 3:44 쯤 선생님이  "컨트롤러는 어쨌든 스프링이 관리하는거기때문에" 라고 하시는 의미가 잘 이해가 되질않습니다.

@Configuration 어노테이션으로 스프링빈으로 등록하는것도 결국 이 어노테이션을보고 스프링이 '어? 이녀석은 스프링이 관리해야겠따'라고 하는 것도 스프링이 관리하는것이 아닌가요..? 

그래서 고민하다 제가 선생님이 하신말의 의미를 (나름!) 생각해봤는데

컴포넌트 스캔방식으로 컨트롤러를 스프링빈등록하고 서비스나 리파지토리는 설정을 통해 스프링 빈으로 등록해서 컨트롤러에서 @Autowired를 이용해서 설정을 통해서 스프링 빈으로 등록되어있는 서비스를 DI할수있따!! 는걸 보여주기 위해서라고 생각을했습니당..

그런데 확신이들지도않아서 질문드립니다.

추가로

컨트롤러, 서비스, 리파지토리 모두 설정을 통해서 스프링빈 등록했더니 문제없이 동작하길래 더 의문이듭니다!!. 

controller MVC spring java spring-boot

답변 3

3

김영한

안녕하세요 염재선님

@Controller를 사용하면 컴포넌트 스캔의 대상이 됩니다. 따라서 스프링 빈으로 자동 등록됩니다.

@Controller는 @Controller 자체에 이미 컴포넌트 스캔의 의미가 내장되어 있습니다. 따라서 @Bean으로 별도로 등록해서 사용 것도 가능은 하지만 거의 @Bean으로 등록해서 사용하지는 않습니다.

서비스나 리포지토리는 사실 스프링이 없어도 잘 동작할 수 있지만, 컨트롤러는 사실 스프링이 제공하는 기능입니다.

고객의 URL 요청에 맞추어 특정 컨트롤러가 호출되는 행위들을 모두 컨트롤러가 제공하는 기능이지요.

따라서 스프링 없이 컨트롤러만 단독으로 사용하는 일은 사실상 없습니다.

이런 문맥으로 설명을 드린 것이고, 결국 컨트롤러도 객체이기 때문에 @Controller 또는 @Bean을 통해 스프링 빈으로 등록해야 합니다^^

감사합니다.

1

염재선

답변 감사합니다. ! 이해에 도움이 되었습니다.

0

염재선

설정을통해 컨트롤러, 서비스, 리파지토리 스프링빈등록코드입니다!

..

0

76

2

Unused property.....

0

102

2

project JDK is misconfigured

0

132

2

외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석

0

83

2

단위/통합 테스트 버전충돌 문제

0

91

2

❗️springboot 4.0.2 버전 aspectj dependency 설정❗️

0

230

1

왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?

0

104

2

윈도우 build test오류 질문

1

103

2

테스트 관련 공부에 대한 조언을 얻고 싶습니다

0

101

2

테스트 실행 시 에러 질문

0

292

1

name을 통한 비교와 객체를 통한 비교

0

77

1

빌드 후 libs 없음

1

129

1

윈도우 gradlew.bat 에러

0

168

1

@PostMapping("/members/new")가 동작하지 않습니다

0

90

1

java static class와 kotlin class

0

79

1

스프링 DB연결

0

127

1

소요 시간

0

87

2

ddl.sql에 빨간 밑줄

1

102

2

welcome page 에러

0

183

3

잘 모르겠습니다.

0

164

2

fail을 똑같이 쳤는데 오류가 발생해요

0

157

2

index.html Welcome page

0

125

1

프로젝트 gradle-groovy ?

0

370

1

테스트코드 메서드명 한글

0

202

2