Я работаю над проектом, и я хочу обновить, если из xml-конфигурации на основе аннотации. Я успешно сделал это на уровне обслуживания, но столкнулся с уровнем DAO. У меня есть классы DAO, которые расширяют BaseDAO, этот BaseDAO расширяет HibernateDaoSupport. Я хочу комментировать классы DAO с помощью @Repository и добавить проверку компонентов в мой контекст.xml. Я думаю, проблема связана с наследованием от моего DAO до BaseDAO? это мой текущий код, который не работает, который объясняет проблему лучшеИзменение проекта Spring от xml до аннотации
@Repository ("userDAO")
public class UserDAOImpl extends BaseDAO implements IUserDAO {
@Override
public Integer saveUser(UserVO user) {
user.setDateCreated(MyDateUtils.getCurrentDate());
user.setDateUpdated(MyDateUtils.getCurrentDate());
Integer userId = performSave(user);
return userId;
}
и это мой BaseDAO
public class BaseDAO extends HibernateDaoSupport {
public Integer performSave(Object object) {
Integer id = null;
try {
id = (Integer) getHibernateTemplate().save(object);
} catch (DataAccessException e) {
}
return id;
}
и это XML боб для BaseDAO
<bean id="baseDAO" class="com.my.dao.database.base.BaseDAO"
abstract="true">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="MyDataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.showSQL}</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>com.my.domain.dao.UserVO</value>
</list>
</property>
</bean>
и в моем контексте.xml я использую
- и это старая конфигурация для UserDAO (который работает)
<bean id="userDAO" class="com.my.dao.database.impl.UserDAOImpl"
parent="baseDAO" />
так, чтобы быть более ясным, я избавиться от этого определения XML боб для UserDAO и используется @Repository и, но он перестал работать и бросить java.lang.IllegalArgumentException: «SessionFactory 'или' hibernateTemplate 'требуется
Это на самом деле работает, но мне нужно, чтобы понять, что вы имеете в виду «так что вы не можете изменить его, чтобы добавить Autowired аннотацию» , означает ли это, что «Autowired» не может использоваться с любыми окончательными методами? –
Я редактирую ответ с дополнительными пояснениями –