Spring

XML 정의 스프링 빈과 프로그래밍 방식으로 동등한 것은 무엇입니까

기록만이살길 2021. 3. 16. 09:03
반응형

XML 정의 스프링 빈과 프로그래밍 방식으로 동등한 것은 무엇입니까

1. 질문(문제점):

xml에서 다음과 같은 빈을 정의하는 것과 같은 프로그래밍 방식은 무엇입니까?

<bean id="foo" class="com.bizz.Foo" />

이상적으로는 XML을 사용하지 않고 호출하지 않고 유형 클래스 new내에서 이것이 발생하도록 스프링이 해당 빈을 만들 수 있기를 바랍니다 @Configuration. 예를 들면 :

@Configuration
public ConfigBar {
  @Bean
  public com.bizz.Foo foo() {
    return /* Programmatic equivalent of <bean id="foo" class="com.bizz.Foo" /> here*/; 
  }
}

나는 new Foo()동등 하다고 생각하지 않는다 .

  • 스프링은 인수가없는 생성자가 아닌 어떤 생성자를 사용할지 선택할 수 있기 때문입니다.
  • 스프링은 의존성을 주입 할 수 있지만 여기서는 수행되지 않을 것이라고 생각합니다.

나는 Spring이 이것을 달성하기 위해 약간의 반성을하고 있음을 알고 있지만 단순히 이것이이 질문에 대한 답이 아니라고 진술합니다.

그렇다면 어떻게 스프링이 Foo프로그래밍 방식으로 빈을 생성하여 스프링이 의존성을 주입하고 생성자를 선택하고 XML로 정의되었을 때 스프링이 일반적으로 수행 할 다른 작업을 선택하도록 할 수 있습니까?

2. 해결방안:

나는 그것을 해결했습니다.

@Bean
@Autowired
public Foo foo(AutowireCapableBeanFactory autowireCapableBeanFactory) {
    return autowireCapableBeanFactory.createBean(Foo.class);
}
65693122
반응형