2010-03-20 4 views
0

Я думаю, что это довольно простой вопрос, но после того, как Google Googling не смог найти ответ.Исключение регистрации во время перегонки бобов

Что мне нужно - это способ записи пользовательского вывода с помощью log4j во время построения весеннего компонента. У меня есть фабричный класс под названием ResponderFactory (который используется в качестве фабрики экземпляра весной) с заводским методом, который может генерировать два разных типа исключения.

public CollectorResponder collectorResponder(String inputQueueName) throws ConfigurationException, BrokerConnectionException {} 

Теперь, как правило, я мог бы обернуть вызов этого метода в примерочном поймать блок с 2 уловом пунктами для обработки каротажных ситуаций для каждого из исключений. Однако, если я использую Spring для ввода этого CollectorResponder, созданного на заводе, в другой класс, я не вижу, как это возможно.

<bean id="responderFactory" class="com.package.ResponderFactory"> 
    <constructor-arg index="0" ref="basicDispatcher" /> 
    <constructor-arg index="1" value="http://localhost:9000" /> 
</bean> 

<bean id="collectorResponder" 
     class="com.package.CollectorResponder" 
     factory-bean="responderFactory" factory-method="collectorResponder"> 
    <constructor-arg value="collector.in" /> 
</bean> 

<bean id="collectorConsumer" class="com.package.CollectorConsumer"> 
    <constructor-arg ref="collectorResponder" /> 
</bean> 

Опять же, я хочу, чтобы поймать эти исключения, когда collectorResponder боб конкретизируется. Прямо сейчас я имею дело с этим CollectorConsumer, когда я создаю экземпляр, используя new CollectorResponder(...).

Есть ли способ, которым я могу это сделать?

ответ

0

Я думаю, вам понадобится передать другому потребителю другой тип (при условии, что вы хотите регистрировать ошибки в конструкторе CollectorConsumer), который является оберткой вокруг фактической конструкции объекта collectorResponder. то есть содержит такой способ, как

CollectorResponder create() throws whatever 

, который вызывается вашим потребительским конструктором. Этот объект-обертка будет невероятно похож на ваш заводский код, но не будет понят весной. В противном случае эти исключения будут происходить до того, как ваш код конструктора будет выполняться независимо от того, что. Spring не сможет вводить исключения, а прокси вокруг невероятно ленивого объекта создания вряд ли будут работать без какого-либо вызова метода.

Я предполагаю, что вы не просто хотите регистрировать исключения в responderFactory.

+0

Конечно, сразу после публикации этого вопроса я понял, что было бы глупо * не * регистрировать исключения на самом заводе, что я и делал. Спасибо за ответ! –

Смежные вопросы