2013-10-02 50 views
0

Spring AOP建議不會在hibernate返回的對象的方法周圍展開。休眠返回的對象周圍的Spring AOP建議

在我的程序中,hibernate正在返回CFolder類型的對象列表。

我想要的是當有人調用hibernate返回的CFolder對象的getName()方法時,我希望Spring AOP在「getName()之前」和「getName()之後」寫入。

CFolder表示文件夾

public class CFolder{ 
    String name; 

    public String getName(){ 
     return name; 
    } 
} 

庫類,查找所有CFolders

@Service 
@Repository 
public class MyService implements MyServiceIfc<TypeTemplateMasterRepository> { 

    @Autowired 
    private CFolderRepository cfolderRepository; 

    @Override 
    @Transactional(readOnly=true) 
    public void findAll(Class classz) throws Exception { 

     List allFolders = cfolderRepository.findAll(); //Use hibernate to find all folders.. 
     for(int i=0; i < allFolders.size(); i++){ 
      CFolder cFolder = (CFolder) allFolders.get(i); 
      System.out.println("The folder name is" + cFolder.getName()); //When 
     } 
    } 
} 

回答

0

Spring將只能代理豆(適用AOP),它控制,基本上AOP只會工作對於ApplicationContext內的豆子。

如果你想攔截其他對象,你將需要使用AspectJ,並恢復編譯你的方面的加載時間或編譯時間。

+0

謝謝 - 只是想知道如果你有一個Hello World的例子來說明如何實現這一點。在這個問題上已經有一段時間了。 – bhattsu

+0

另外 - 有沒有一種方法可以在Spring的ApplicationContext中通過hibernate導入或導入對象,或者說讓Spring Managed成爲可能。如果有的話,是否有開銷? – bhattsu

+0

不,沒有...沒有彈簧管理對象,彈簧永遠無法觸摸它們,而不是沒有加載/編譯時編織。 –