2013-06-27 2 views
0

나는 최종 필드가있는 빈을 가지고있다.args가있는 생성자 만있는 동적 빈을 만드는 방법

public class Foo { 
    Service service; 
    final String bar; 
    public Foo(String bar){}; 
} 

service은 최종 설정자가 아니며 세터가 있습니다. bar은 최종 값이며 많은 값을 가질 수 있습니다. final 키워드를 삭제할 수 없습니다. 주입 된 서비스와 동적 막대 값을 사용하여 Foo의 인스턴스를 만들 수있는 스프링 팩토리를 만들려고합니다. factory.create(bar).

  • @Configuration하지만 구성 매개 변수 봄 또는 동적 매개 변수에 의해 관리되지 허용하지 않습니다 bar 값이 알려진

    억제 할되지 않기 때문에 Foo 콩은 내가 시도가 런타임에 통해 인스턴스된다.

  • 조회 메소드에는 인수가없는 생성자가 필요합니다.

어떤 생각?

감사합니다.

당신은 하나의 방법으로 응용 프로그램 컨텍스트 XML에서 생성자 주입을 사용할 수 있습니다

답변

4

ApplicationContext.getBean(String name, Object... args) 방법을보십시오. args 매개 변수를 사용하여 bean 작성에 인수를 전달할 수 있습니다.

+0

답변을 주셔서 감사합니다. ApplicationContext.getBean은 덜 침략적 인 방식입니다. –

0

이 작업을 수행합니다 :

<bean name="foo" class="com.example.Foo"> 

    <constructor-arg index="0">Bar</constructor-arg> 

</bean> 

편집 : 부재, 즉이 질문에 체크 아웃 : How to use @Autowired in spring

번째 대답 (나 아닌)

여기에 @Configurable 주석을 사용할 수있는 것 같습니다.

+0

'bar' 값이 알려지지 않고 무제한이기 때문에'Foo' 빈은 런타임에 인스턴스화됩니다. XML bean 정의는 대답이 될 수 없다 –

+0

답해 주셔서 감사합니다. @Configurable은 다소 침입 적입니다. 런타임에는 aspectj와 weaving이 필요합니다. –

관련 문제