Boa noite!
Eu tenho um grande nó na cabeça quando eu tento assimilar o que eu aprendo aqui com o desenvolvimento de aplicações web com Spring e toda aquelas injeção de dependência e milhares de usuários acessando ao mesmo tempo e a performance em cima disso tudo.
O objetivo desse tópico é saber se eu estou pensando na maneira correta de fazer o exemplo dessa aula, e se alguém tiver algum material de SOLID/Design Patterns + Spring, por favor, me envie!
Vou exemplificar de uma maneira bem tosca:
Aqui a classe principal
@Service
public class GeradorNota {
private List<Acoes> acoes;
@Autowired
public GeradorNota(NFDao nfDao, EmailService emailService) {
acoes.add(emailService);
acoes.add(nfDao);
//ou....
acoes = Arrays.asList(nfDao,emailService);
}
Aqui um DAO de NF, que já contém vários métodos de NF
public interface NFDao extends Acoes {
public Object buscarNf();
public void salvarNf(Object o);
}
Aqui a implementação
@Repository
public class NFDaoImpl extends AbstractDAO implements NFDao {
@Autowired
public NFDaoImpl(NamedParameterJdbcTemplate template) {
super(template);
}
@Override
public void executa(Object nf) {
}
@Override
public Object buscarNf() {
return null;
}
@Override
public void salvarNf(Object o) {
}
}
E aqui vamos imaginar um cara que dispara e-mail
@Service
public class EmailService implements Acoes {
@Override
public void executa(Object nf) {
}
}
Estou imaginando da maneira correta? Fora que ficou horrível eu ter um método executa no meu DAO, igual ao outro tópico aberto aqui no forum, no caso a melhor solução seria a mesma que ele usou?
@Service
public class PersisteNota implements Acoes {
@Autowired
private NFDao dao;
@Override
public void executa(Object nf) {
dao.salvarNf(nf);
}
}