Я использую JSF + Spring + HibernateApplicationContext.getBean против нового ключевого слова
protected @Inject ChartOfAccount chartOfAccount;
Я в принципе хочу, чтобы заполнить chartOfAccount
из списка
for (DistributionEntry de : getDistributionEntries()) {
chartOfAccount.setAccount(de.getAccount());
chartOfAccountList.add(chartOfAccount);
}
для каждой итерации я хочу новый объект chartOfAccount
иначе вы знаете, что список содержит тот же объект с последним значением.
Solution One: использовать новое ключевое слово :-p
for (DistributionEntry de : getDistributionEntries()) {
ChartOfAccount coa= new ChartOfAccount();
coa.setAccount(de.getAccount());
chartOfAccountList.add(coa);
}
Решение Два: applicationContext.getBean
for (DistributionEntry de : getDistributionEntries()) {
chartOfAccount= applicationContext.getBean(ChartOfAccount.class);
chartOfAccount.setAccount(de.getAccount());
chartOfAccountList.add(chartOfAccount);
}
Но я читал некоторые статьи, которые, чтобы избежать использования applicationContext.getBean
Если я избегу использовать applicationContext.getBean
, Каков наилучший способ справиться с такой ситуацией? и оба поведения будут одинаковыми? (ApplicationContext.getBean против нового ключевого слова)
Примечание: Мой управляемый компонент @Scope («сессия») и Модель @Scope (BeanDefinition.SCOPE_PROTOTYPE), так как все мы знаем, что за один сеанс это singleton и prototype для разных сеансов.
Прежде всего, пожалуйста, расскажите, какую бизнес-логику инкапсулировали в ChartOfAccount? Есть ли поля в окне? Существует разница между «новыми ChartOfAccount()» и «applicationContext.getBean (ChartOfAccount.class)». В первом случае вы создаете объект самостоятельно, а поля с автоповтором должны быть пустыми, с другой стороны, если вы создадите ChartOfAccount, используя контекст приложения, это будет Spring Bean. Spring управляет зависимостями для вас и вводит их в экземпляр ChartOfAccount. –
@NechaevSergey нет никакой бизнес-логики в ChartOfAccount, это просто модель '@Scope (BeanDefinition.SCOPE_PROTOTYPE) открытый класс ChartOfAccount реализует Serializable {' –
Похоже, что ChartOfAccount должен быть POJO-классом. Удалите декларацию bean и используйте новое ключевое слово для создания экземпляра. Поскольку @Robert Moskal сказал, что есть общие закономерности, где использовать весенние бобы. Прочитайте документацию для последующих действий –