Por que preciso de um setter para o campo autowired / injected?
Eu tenho um bean:
<bean id="BasketLogic" class="efco.logic.EfcoBasketLogic" autowire="byType">
<property name="documentLogic" ref="DocumentLogic" />
<property name="stateAccess" ref="StateAccess" />
<property name="contextAccess" ref="ContextAccess" />
</bean>
<bean id="EfcoErpService" autowire="byType" class="efco.erp.service.EfcoErpServiceImpl">
<constructor-arg ref="ErpConnector"/>
</bean>
documentLogic, stateAccess econtextAccess são campos emBasketLogicImpl
E eu não tenho<context:component-scan />
EfcoBasketLogic.java:
public class EfcoBasketLogic extends BasketLogicImpl {
@Inject
private EfcoErpService erpService;
...
...
...
}
erpService énulo, a menos que eu forneça um setter. Mas por que? Eu pensei que um setter não é necessário onde a autowiring está ocorrendo? Poderia ser que o BasketLogicImpl é responsável por isso?