【发布时间】:2012-06-04 00:22:01
【问题描述】:
我正在使用一个 API,它以 XXXLocalServiceUtil 类的形式公开服务,这些类是单例对象的静态包装器。我不想使用静态 XXXLocalServiceUtil 方法,而是想自己注入 XXXLocalService 对象以直接在我的代码中使用它们,例如:
@Named
public class MyMailingService {
@Inject UserLocalService userService;
public String mailUser(String email) {
User user = userService.getUser(email);
emailUser(user);
}
}
然后像这样配置我的applicationContext.xml:
<beans ...>
<bean class="x.y.z.UserLocalServiceUtil" factory-method="getService"/>
<bean class="x.y.z.CompanyLocalServiceUtil" factory-method="getService"/>
...
</beans>
这非常有效。现在,我正在谈论的这个 API 有大约 100 个这样的 XXXLocalServiceUtil 类,每个类都有自己的静态 getService 方法,它返回实际的服务。我不想在我的applicationContext.xml 中列出所有这些服务,我想让 Spring 为我注入的每个 XXXLocalService 找到正确的 XXXLocalServiceUtil 类。所以我需要某种动态 bean 工厂,它可以为我完成工作,当然是在延迟加载的基础上。
有人知道如何轻松实现吗?
【问题讨论】:
-
您是否尝试过使用 @Autowired 而不是 @Inject,并将您的 xml 定义为按类型自动装配?
-
我想你可以找到答案here。