方法1:Spring MVC的倉庫廠
下面是其使用的是相同的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:
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);
.....
}
}
能否請你幫我出哪種方法更好地根據性能和內存消耗。