Ошибка на hybris для daos-сервисов
Это ошибка:
ПРЕДУПРЕЖДЕНИЕ [localhost-startStop-1] [CloseAwareApplicationContext] Обнаружено исключение во время инициализации контекста - отмена попытки обновления: org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'totalCustomersDao', определенного в ресурсе пути к классу [trainingcore-spring.xml] ]: Ошибка установки значений свойств; вложенное исключение: org.springframework.beans.NotWritablePropertyException: недопустимое свойство 'modelService' класса бина [de.hybris.training.core.dao.impl.TotalCustomersDaoImpl]: свойство бина 'modelService' не доступно для записи или имеет недопустимый метод установки. Соответствует ли тип параметра установщика возвращаемому типу получателя? ПРЕДУПРЕЖДЕНИЕ [localhost-startStop-1] [CloseAwareApplicationContext] Обнаружено исключение во время инициализации контекста - отмена попытки обновления: org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'totalCustomersDao', определенного в ресурсе пути к классу [trainingcore-spring.xml] ]: Ошибка установки значений свойств; вложенное исключение: org.springframework.beans.NotWritablePropertyException: недопустимое свойство 'modelService' класса бина [de.hybris.training.core.dao.impl.TotalCustomersDaoImpl]: свойство бина 'modelService' не доступно для записи или имеет недопустимый метод установки. Соответствует ли тип параметра установщика возвращаемому типу получателя? ОШИБКА [localhost-startStop-1] [HybrisContextFactory] Ошибка инициализации глобального контекста приложения! org.springframework.beans.factory.BeanCreationException: Ошибка создания компонента с именем 'totalCustomersDao', определенного в ресурсе пути к классу [trainingcore-spring.xml]: Ошибка установки значений свойств; вложенное исключение: org.springframework.beans.NotWritablePropertyException: недопустимое свойство 'modelService' класса бина [de.hybris.training.core.dao.impl.TotalCustomersDaoImpl]: свойство бина 'modelService' не доступно для записи или имеет недопустимый метод установки. Соответствует ли тип параметра установщика возвращаемому типу получателя?
trainingcore.spring.xml
<!-- Total Customer service dao facade-->
<alias alias="totalCustomersDao" name="totalCustomersDao"/>
<bean id="totalCustomersDao"
class="de.hybris.training.core.dao.impl.TotalCustomersDaoImpl"
parent="abstractItemDao" >
<property name="flexibleSearchService" ref="flexibleSearchService"/>
</bean>
<bean id="totalCustomerService"
class=" de.hybris.training.core.impl.TotalCustomerServiceImpl" >
<property name="totalCustomersDao" ref="totalCustomersDao"/>
</bean>
<bean id="totalCustomerFacade" class="de.hybris.training.core.facade.impl.TotalCustomerFacadeImpl">
<property name="totalCustomerService" ref="totalCustomerService"/>
</bean>
TotalCustomersDaoImpl
public class TotalCustomersDaoImpl implements TotalCustomersDao { private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(UsersFindJob.class);
private static final String query =
"SELECT *" +
"FROM {" + CustomerModel._TYPECODE + "}"+
"WHERE p_name LIKE "
+ "'%" + CustomerModel.NAME+"+%'";
private DefaultFlexibleSearchService flexibleSearchService;
public List<CustomerModel> findAllCustomersFromDao(String name) {
LOG.info("***********************************");
LOG.info("***********************************");
LOG.info("*************************findAllCustomersFromDao**********");
LOG.info("***********************************");
LOG.info("***********************************");
final Map<String, Object> params = new HashMap<String, Object>();
params.put(CustomerModel.NAME, name);
FlexibleSearchQuery fQuery = new FlexibleSearchQuery(query);
if (params != null) {
fQuery.addQueryParameters(params);
}
final SearchResult<CustomerModel> result = flexibleSearchService.search(fQuery);
return result.getResult();
}
public void setFlexibleSearchService(DefaultFlexibleSearchService flexibleSearchService) {
this.flexibleSearchService = flexibleSearchService;
}
public DefaultFlexibleSearchService getFlexibleSearchService() {
return flexibleSearchService;
}
}
TotalCustomerFacadeImpl
public class TotalCustomerFacadeImpl implements TotalCustomerFacade {
//TODO autowired or resoucre not work
private TotalCustomerService totalCustomerService; private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(UsersFindJob.class);
public TotalCustomerService getTotalCustomerService() {
return totalCustomerService;
}
public void setTotalCustomerService(TotalCustomerService totalCustomerService) {
this.totalCustomerService = totalCustomerService;
}
@Override
public List<String> findCustomerContainingName(String firstName) {
List<CustomerModel> customerModels;
List<String> customerFirstNames = new ArrayList<>();
LOG.info("***********************************");
LOG.info("***********************************");
LOG.info("*************************findCustomerContainingName**********");
LOG.info("***********************************");
LOG.info("***********************************");
customerModels = totalCustomerService.getAllCustomersNames(firstName);
LOG.info("***********************************");
LOG.info("***********************************");
LOG.info("*************************2findCustomerContainingName**********");
LOG.info("***********************************");
LOG.info("***********************************");
for (int i = 0; i < customerModels.size(); i++) {
final String fName = splitName(customerModels.get(i).getName())[0];
customerFirstNames.add(fName);//adding first name
}
return customerFirstNames;
}
TotalCustomerServiceImpl
public class TotalCustomerServiceImpl implements TotalCustomerService {
private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(UsersFindJob.class);
private TotalCustomersDao totalCustomersDao;
public TotalCustomersDao getTotalCustomersDao() {
return totalCustomersDao;
}
public void setTotalCustomersDao(TotalCustomersDao totalCustomersDao) {
this.totalCustomersDao = totalCustomersDao;
}
Ошибка говорит Bean property 'modelService' is not writable or has an invalid setter method.
Я не использовал modelservice
,
Для Дао и класса обслуживания у меня есть настоящие имена в XML и JAVA. в идее IntelliJ, когда я нажимаю на XML, я могу перейти в класс Java, где я ожидаю пойти.
1 ответ
Проблема в том, что вы заявили parent="abstractItemDao"
за totalCustomersDao
в вашем XML, с другой стороны, вы не реализовали AbstractItemDao
учебный класс.
Другими словами, ваш класс не имеет какого-либо свойства modelService, которое фактически определено в определении вашего bean-компонента XML, и это приводит к исключению NotWritablePropertyException для modelService.
Либо вы можете удалить parent="abstractItemDao"
от твоего totalCustomersDao
объявление, если вы вообще не хотите использовать что-либо из класса AbstractItemDao.
<alias alias="totalCustomersDao" name="totalCustomersDao"/>
<bean id="totalCustomersDao"
class="de.hybris.training.core.dao.impl.TotalCustomersDaoImpl">
<property name="flexibleSearchService" ref="flexibleSearchService"/>
</bean>
Или же
продолжается AbstractItemDao
класс в TotalCustomersDaoImpl
public class TotalCustomersDaoImpl extends AbstractItemDao implements TotalCustomersDao