Anotations em tempo de compilação

Prezados,

Gostaria que apenas minhas classes de negocio pudessem executar o metodo save do meu DAO.
Entao, eu tenho a seguinte estrutura:
Um controler, que no metodo save chama o negocio.save, que por sua vez chama o dao.save.
Gostaria de saber se tem como fazer (com anotations) com que em tempo de compilação nao permita que o metodo dao.save seja chamado fora do negocio.save? Sei que posso criar anotações e através da AOP, detectar tal regra. Mas teria como fazer em tempo de compilação? Isto é já mostrar que tem algo errado ao programador?

Em tempo de compilação não.

Voce pode restringir a visibilidade dessa classe para protected ou default(package).