アプローチ1:以下Spring MVCのリポジトリ工場
は同じ2つのリポジトリを使用している2つのサービスクラスです。したがって、上記のクラスで
@org.springframework.stereotype.Service(value = "userService")
public class UserServiceImpl implements UserService {
@Autowired
private CounterRepository counterRepository;
@Autowired
private SessionRepository sessionRepository;
}
@org.springframework.stereotype.Service(value = "projectService")
public class UserServiceImpl implements UserService {
@Autowired
private CounterRepository counterRepository;
@Autowired
private SessionRepository sessionRepository;
}
、あなたがCounterRepository & SessionRepositoryがUserServiceImpl & ProjectServiceImplサービスに2回ずつ使用していることを見るように。
これは正しいアプローチか、One Factory Classを作成して必要なレポを取得することができますか?
アプローチ2:
class RepoFactory{
@Autowired
private CounterRepository counterRepository;
@Autowired
private SessionRepository sessionRepository;
public <T> T getRepo(Class<T> entityClass) {
if (entityClass == CounterRepository .class) {
return (T) appMessageRepository;
} else if (entityClass == SessionRepository.class) {
return (T) auditTrailRepository;
}
}
そして私は
@org.springframework.stereotype.Service(value = "userService")
public class UserServiceImpl implements UserService {
@Autowired
private RepoFactory repoFactory;
public void someMethod(){
repoFactory.getRepo(CounterRepository.class);
.....
}
public void someMethod2(){
repoFactory.getRepo(SessionRepository.class);
.....
}
}
@org.springframework.stereotype.Service(value = "projectService")
public class ProjectServiceImpl implements ProjectService {
@Autowired
private RepoFactory repoFactory;
public void someMethod(){
repoFactory.getRepo(CounterRepository.class);
.....
}
public void someMethod2(){
repoFactory.getRepo(SessionRepository.class);
.....
}
}
の下のように使用しますが、パフォーマンスとメモリ消費量に応じて優れているアプローチ私を助けてもらえます。