Java 使用@autowired存储在另一个类中动态创建的bean列表
我有一个名为Drives的类,它动态实例化FsAccess bean。Java 使用@autowired存储在另一个类中动态创建的bean列表,java,spring,Java,Spring,我有一个名为Drives的类,它动态实例化FsAccess bean。 我有一个名为ServersAccessService的服务类,它查找FsAccess bean并使用@autowired将它们存储在映射中。有没有办法让服务类在驱动器完成FsAccess bean的实例化后启动@autowired 服务类别: public class ServersAccessService implements DisposableBean { protected static final Log lo
我有一个名为ServersAccessService的服务类,它查找FsAccess bean并使用@autowired将它们存储在映射中。有没有办法让服务类在驱动器完成FsAccess bean的实例化后启动@autowired 服务类别:
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);
}
}
如果
Drives
bean在初始化阶段实例化FsAccess
bean,您可以通过Drives
bean声明ServersAccessService
bean的依赖关系。这将强制在初始化ServersAccessService
bean之前初始化Drives
bean。我相信您想要的是将驱动器类设置为@Configuration bean,并使返回带有@bean注释的列表的方法。通过这种方式,spring容器知道FsAccess列表,并且可以通过@Autowired进行注入
编辑:
参考:驱动器是否通过弹簧注射?它从何处获得创建
FsAccess
实例所需的数据?通过Spring注入是什么意思?它从uPortal获取数据。我正在为uPortal重组一个portlet。由于不熟悉uPortal的工作原理,Spring在哪里发挥作用?门户本身向驱动器提供数据
?uPortal从active directory获取用户名和组信息等用户信息。portlet从uPortal获取该信息,并使用该信息为用户创建驱动器。这是一个公文包/文件共享portlet,因此为用户创建的驱动器实际上只是该用户共享文件夹的位置。
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);
}