我的目的是实现自定义DAO接口,这就是我的工作,但似乎不起作用。
我的界面是:
public interface AbstractDAO<T> {
void add(T object);
T load(Integer ID);
List<T> list();
void update(T object);
void delete(Integer ID);
}
它的实施:
@Repository
public class AccountDAO implements AbstractDAO<Account> {
@Autowired
private JdbcTemplate jdbcTemplate;
@Transactional
public void add(Account object) {
...
}
...
}
正如我所说,由于Spring扫描仪无法找到dao类,因此无法正常工作。
如何让这项工作?没有implements
,它可以正常工作。
Spring扫描程序配置:
<bean ...>
<context:component-scan base-package="dao" />
<context:component-scan base-package="tmp" />
<context:component-scan base-package="services" />
<context:component-scan base-package="entities" />
<mvc:resources mapping="/resources/**" location="/resources/" />
<mvc:annotation-driven />
<tx:annotation-driven />
<task:annotation-driven />
<import resource="spring-beans.xml"/>
</bean>
错误:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type [dao.AccountDAO] found for dependency: expected
at least 1 bean which qualifies as autowire candidate for this dependency
答案 0 :(得分:1)
将@Repository("accountDAO")
public class AccountDAO implements AbstractDAO<Account> {
@Autowired
private JdbcTemplate jdbcTemplate;
@Transactional
public void add(Account object) {
...
}
...
}
实施更改为:
DAO
以及@Controller
@RequestMapping(value = "")
public class Controller
@Autowired
@Qualifier("accountDAO")
private AbstractDAO accountDAO;
.....
}
的用法:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
CloseWindow.closeWindow();
}