인프런 커뮤니티 질문&답변
빈 등록 메서드의 파라미터가 빈이 아니어도 되나요?
작성
·
29
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
yoon6669님께서 질문해주신 내용에 대한 답을 드리겠습니다.
스프링에서 @Bean 메서드는 스프링 컨테이너에 등록할 객체를 정의하는 데 사용됩니다. @Bean 메서드의 파라미터로 전달되는 인자들이 스프링 빈이 아닐 경우, 스프링 컨테이너가 자동으로 관리하지 않기 때문에 빈으로 활용되지는 않습니다.
하지만 코드 예시에서 methodA라는 @Bean 메서드에서 파라미터 b를 사용하고 있는데, 이 b가 스프링 빈이 아닌 일반 클래스일 경우 스프링 자체에서 직접적으로 인스턴스를 주입하지 않습니다. 즉, 빈으로 등록된 객체는 스프링 컨테이너에 의해서 자동 관리되지만, 일반 클래스는 직접 new를 통해 생성하거나 다른 방식으로 인스턴스를 제공해야 합니다. 만약 b가 스프링 컨테이너 바깥에서 인스턴스화된 객체라면, 이를 스프링 빈의 메서드 내에서 적절히 다뤄줘야 합니다.
실제 동작 원리에 대해 설명드리면:
- 메서드 파라미터로 빈이 아닌 객체를 전달하려면 직접 그 객체를 외부에서 관리하거나, 아예 해당 메서드에서 객체 생성 로직을 포함시킬 수 있습니다.
- 만약 해당 인자를 주입하려면 방법이 여러 가지 있지만, 주로 팩토리 패턴이나 외부 설정 파일을 참조하여 객체를 생성하고 이를 전달하는 방식을 사용할 수 있습니다.
스프링 컨테이너 및 빈 관리에 대한 심도 깊은 예시는 다음 링크를 통해 더 알아보실 수 있습니다: 스프링 빈 등록 및 관리
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.






사실 스프링 시큐리티 공부중에 위와 같은 코드가 나왔는데 여기서 HttpSecurity가 일반 클래스더라구요. 그래서 질문드린건데 그럼 이런건 어떻게 주입되는걸까요?securityFilterChain()가 호출 되는 과정에서 HttpSecurity를 직접 생성해서 주입하는 걸까요?