Нет, вы не можете ссылаться на вставленные поля в конструкторе. Фреймворк должен каким-то образом создать ваш объект (вызвать конструктор), а затем внедрить зависимости, чтобы они были пустыми во время выполнения конструктора. Вместо этого вы обычно применяете аннотацию @PostConstruct
к одному из ваших методов и выполняете там инициализацию:
class MyBean {
@Inject
private MyDependency myDep;
@PostConstruct
public void init() {
assert myDep != null;
}
}
В случае весенней конфигурации xml вы можете использовать init-method="init"
вместо @PostConstruct
в вашем <bean>
определении. В качестве альтернативы вы можете использовать конструктор инъекций, в xml:
<bean id="myBean" class="my.package.MyBean">
<constructor-arg ref="myDependency/>
</bean>
или эквивалент аннотации.