2011-06-07 19 views
0

我有一個名爲Drives的類,它動態地實例化FsAccess bean。
我有一個名爲ServersAccessService的服務類,它可以找到FsAccess bean,並使用@autowired將它們存儲在地圖中。在驅動器完成實例化FsAccess bean之後,有沒有辦法讓服務類啓動@autowired?使用@autowired存儲在另一個類中動態創建的bean列表

服務類:

public class ServersAccessService implements DisposableBean { 

protected static final Log log = LogFactory.getLog(ServersAccessService.class); 

protected static Map<String, FsAccess> servers = new HashMap<String, FsAccess>(); 
I 
protected Map<String, FsAccess> restrictedServers = new HashMap<String, FsAccess>(); 

protected boolean isInitialized = false; 

protected static Map<String, DrivesCategory> drivesCategories = new HashMap<String, DrivesCategory>(); 
@Autowired 
public void setServers(List<FsAccess> servers) { 
    for(FsAccess server: servers) { 
     this.servers.put(server.getDriveName(), server); 
    } 
} 

驅動器類:

MyBeanFactory mbf = new MyBeanFactory(); 

     //loop through each drive in driveList 
     for(String name:driveList) 
     { 

      String fullUri = "smb://naz-fs3/home/"+name; 
      String icon = "/esup-portlet-stockage/img/drives/root.png"; 


      VfsAccessImpl drive = mbf.createInstance(); 

      //Set attribute information 
      drive.setDriveName(name); 
      drive.setIcon(icon); 
      drive.setUri(fullUri); 
      drive.setContextToken(name); 




     } 
+0

是'Drives'通過注入春天?它在哪裏獲得創建'FsAccess'實例所需的數據? – laz 2011-06-07 17:03:11

+0

你是什麼意思通過春季注入?它從uPortal獲取數據。我正在爲uPortal重新構建一個portlet。 – Mike 2011-06-07 19:30:53

+0

不熟悉uPortal的工作方式,Spring會發揮什麼作用?門戶網站本身將數據提供給「Drives」? – laz 2011-06-07 22:20:31

回答

0

如果Drives bean被實例化FsAccess豆在它的初始化階段,你可以通過depends-on聲明ServersAccessService豆的依賴關係Drives豆。這會在初始化ServersAccessService bean之前強制對Drives bean進行初始化。

相關問題