我有一個Spring項目使用註釋來應用(尤其是)緩存。使用Spring/AspectJ的建築執法
我的理解是,這些註釋只有在@Autowired和通過SpringAOP調用時纔有效。
這意味着如果某個方法在同一個類中調用另一個方法,則第二個方法上的任何註釋都將被忽略,例如
@Cacheable(...)
public Animal getAnimal(int id) {
return get(m_url, id);
}
public Cage getCagedAnimal(int id) {
Animal animal = getAnimal(id); // This call will not apply @Cacheable
Cage cagedAnimal = new Cage(animal);
return cagedAnimal;
}
我在尋找的是一種強制執行的方法,即公共方法不應該能夠調用同一類的其他公共方法。
我嘗試了一些類似於這裏使用的方法http://www.jayway.com/2010/03/28/architectural-enforcement-with-aid-of-aspectj,但是在對同一個類應用限制時它就不夠用了。