我有一个包含常用方法的抽象类:
public abstract class AbstractDAO<T> implements IFindTradeDAO {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public List<Trade> findOne(final int eventId) {
return jdbcTemplate.query(getOneQuery(), new Object[]{eventId}, new RowMapper());
}
@Override
public List<Event> getAll() {
return jdbcTemplate.queryForList(getAllQuery(), Event.class);
}
protected abstract String getOneQuery();
protected abstract String getAllQuery();
}
提供类型特定查询的派生类:
@Repository
public class TypeA extends AbstractDAO implements IFindTradeDAO {
private static final String FIND = "sql/findA.sql";
private static final String GET = "sql/getA.sql";
@Override
protected String getOneQuery() {
return FIND;
}
@Override
protected String getAllQuery() {
return GET;
}
@Repository
public class TypeB extends AbstractDAO implements IFindTradeDAO {
private static final String FIND = "sql/findB.sql";
private static final String GET = "sql/getB.sql";
@Override
protected String getOneQuery() {
return FIND;
}
@Override
protected String getAllQuery() {
}
}
鉴于我有这个类结构,我想为所有派生类sql调用getAllQuery()
,例如对于TypeA
和TypeB
如期使用
org.springframework.scheduling.annotation.Scheduled;
@Component
public class GetAllEvents {
@Scheduled
public void processUnprocessedEvents() {
//invoke getAllQuery for all DAOS and combine results
}
}
我不太确定如何得到一个可以调用所有的Component
?有没有技术或例子可以用来实现这个目标?
我不是Java程序员,但是在.NET中你需要将它们全部放入某种类型的列表或数组中,并在每个项目上调用该函数。
因此,可以创建一个名为Add(IFindTradeDAO dao)的方法,将每个方法添加到列表中。然后在每个项目上调用该方法。