인프런 커뮤니티 질문&답변

Truestar님의 프로필 이미지
Truestar

작성한 질문수

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

회원 웹 기능 - 등록

혹시 되나 싶어서 MemberController 를 SpringConfig 등록을 시도해 봤습니다.

해결된 질문

작성

·

303

1

이렇게 해보니 MemberController 의

@GetMapping("...") URI 가 이 작동을 안하는데 

왜 작동을 안하는지 여쭤봐도 될까요?

디버그 로 컨트롤러가 등록이 잘된지 해쉬값 확인으로 생성이 됬는지 확인은 했으나
URI 호출 시 GetMapping 주소가 작동하지 않는것을 보면..
등록이 잘 안됬나 싶기도 하구요...
의문이네요...

답변 5

2

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. Truestar님^^

이번 강의에서는 자세히 소개하지 않았지만

@Controller, @Repository 같은 애노테이션들은 단순히 컴포넌트 스캔의 대상이 되는 것 뿐만 아니라, 스프링이 부가적인 기능들을 더해서 처리해줍니다.

@Controller는 스프링 MVC에서 컨트롤러로 사용되도록 다양한 부가 기능이 동작하고,

@Repository도 DB에 종속된 예외 처리를 스프링 기반의 예외 처리로 변경해주는 등 다양한 부가 기능이 동작합니다.

그래서 빈으로 직접 등록해도 해당 애노테이션이 없으면 이런 부가기능들이 동작하지 않습니다^^

도움이 되셨길 바래요.

1

질문 감사드립니다. 이해에 도움이 되었습니다

이후 강의에서 설명해주시는데요.

(Bean 등록 설정을 해놓고)

DI로 Bean을 주입받는 방법이

생성자로 방식일 때

생성자가 `딱 1개인 경우`에는

생성자에 `@Autowired 애노테이션을 생략해도

된다`고 설명해주십니다.

1

Truestar님의 프로필 이미지
Truestar
질문자

@Controller 가 그런 그런 역할 이었군요!!!
이번 일로 애노테이션 이라는 큰 호수를 만난것 같습니다.
친절한 답변 정말 감사드립니다!

0

Truestar님의 프로필 이미지
Truestar
질문자

제가 알기론 원리는 이렇습니다.

많은 어노테이션 중에..

@Controller @Service @Repository 가 명시된 클래스 들은 모두 @Component 이기에

스프링 내부 컨테이너로 부터 @ComponentScan 대상이 되어 자동 등록이 되구요,

@Autowired 는

선언된 필드에 컨테이너의 빈 인스턴스를 연결짓는 역할을 합니다

그래서 @Autowired 는 컨트롤러 작동에 영향을 주지 않아서

빼도 작동하는 것 이겠지요

0

SpringConfig에서 service와 repository 를 bean 등록을 해줬으면 MemberController에서 MemberController 생성자에 대한 Autowired 어노테이션을 빼도 되는 건가요?

영상에서는 어노테이션이 있는데, 빼고 해도 잘 동작하길래 제가 맞게 이해한건지 질문드립니다.

Truestar님의 프로필 이미지
Truestar

작성한 질문수

질문하기