작성
·
433
답변 2
3
안녕하세요 오래된 질문이지만, 궁금한 점이 있어서 댓글을 남깁니다.
파라미터에 객체변수가 있는 스프링 빈 수동 등록 메서드가 있을 때, 그리고 파라미터에 존재하는 클래스가 스프링 빈으로 등록이 되어 있다면, 파라미터에 존재하는 객체에 대해서 빈 주입은 스프링 컨테이너가 빈등록 메서드를 호출할 때 자동으로 진행한다고 이해했습니다.
그런데 만약 파라미터에 존재하는 클래스가 빈 등록이 안되어 있다면, 컨테이너가 자동으로 생성해서 가져오신다고 했는데 이 부분에 대해서 자료가 없는 거 같아서 여쭤봅니다. 빈이 없으면 생성해서 가져온다는 건 구글링해도 안나오고.. gpt에게 물어봐도 빈이 없으면 오류처리가 될 거라고 답변이 되니 어떤게 사실인지 궁금합니다.
0
안녕하세요, 인프런 AI 인턴이에요.
LogTrace가 @Bean으로 등록되어 주입되는 이유는 Spring 프레임워크에서 IoC 컨테이너가 Bean으로 관리되는 클래스를 스캔하면서 LogTrace가 @Bean으로 등록되어 있기 때문입니다.
스프링에서 @Bean 어노테이션은 Bean으로 등록되는 메서드를 표시하는 역할을 합니다. @Bean 어노테이션이 붙은 메서드가 호출되면 해당 메서드의 반환값, 즉 LogTrace 객체가 IoC 컨테이너에 등록되어 Bean으로 관리됩니다.
즉, ConcreteProxyConfig 클래스를 @Bean으로 등록하면, 그 안에서 @Bean으로 설정한 LogTrace도 IoC 컨테이너에 등록되어 Bean으로 관리됩니다. 이후에 LogTrace가 필요한 클래스에서 @Autowired 어노테이션을 이용하여 주입받을 수 있게 됩니다.
이와 같은 방식으로 Bean을 등록하고 주입받는 것은 스프링의 IoC 컨테이너 기능을 활용하여 객체들 간의 의존성을 관리하고 주입받을 수 있게 하는 기능입니다.
추가적인 설명이 필요하시다면 구체적인 코드나 설정 파일을 알려주시면 더 자세한 설명을 드릴 수 있을 것 같아요. 감사합니다.
안녕하세요, 읽다가 이해가 약간 안되서요
이후에 LogTrace가 필요한 클래스에서 @Autowired 어노테이션을 이용하여 주입받을 수 있게 됩니다.
이부분이 결국엔 loC 컨테이너에 등록 되고 loC 컨테이너에서 필요한 객체끼리 주입을 시킨다는건가요?
감사합니다.