I tried to see if there was already a similar question, but could not find it, here it is.
we have legacy code where one BO calls method calls for many DAOs using reflection. I changed the code for simplicity.
@Transactional
class EndpointData1DAO implements DAO{
void inserData() {
}
}
@Transactional
class EndpointData2DAO implements DAO{
void inserData() {
}
}
class MachoBO {
void handleEverything(String daoName) {
DAO dao = getDAOUsingReflection(daoName);
dao.insertData();
}
}
the problem is that the requirement has changed, so when insertData () is called in EndpointData1DAO, EndpointData2DAO must also be specified in insertData.
I could just add EndpointData2DAO as a member of EndpointData1DAO, but this greatly violates SRP and makes it ugly.
@ExecuteAfter (clazz = EndpointData2DAO.class, method = "insertData" ), EndpointData2DAO insertData(),
, , , aop: after,
@Transactional
@ExecuteAfter(clazz=EndpointData2DAO.class, method="insertData")
class EndpointData1DAO implements DAO{
void inserData() {
System.out.println("insert1");
}
}
@Transactional
class EndpointData2DAO implements DAO{
void inserData() {
System.out.println("insert2");
}
}
class MachoBO {
void handleEverything(String daoName) {
DAO dao = getDAOUsingReflection(daoName);
dao.insertData();
}
1
2
machoBO.handleEverthing( "Data1" );
:
Data() EndpointData1DAO EndpointData2DAO ?
, EndpointData2DAO insertData() , EndpointData1DAO 'insertData()?
thanx ~!!