我有一个表示包含数千个配置设置的CSV文件的数据结构。该结构是一个Java类文件,其中包含实例变量来表示文件中的记录(即:HashMap
)和文件的状态(错误,警告等)。
这些类不是由Spring创建的,因为它们具有状态。我希望该类访问当前由Spring托管数据库DAO类处理的系统配置属性。通常当类需要这个DAO时,我使用@Autowired
通过Spring注入它。但由于我的数据结构不是由Spring管理的,CSV结构类如何访问DAO?
我能想到的唯一方法是从Spring托管bean创建数据结构时只传入DAO:
CSVDataStruture c = new CSVDataStruture(dao);
答案 0 :(得分:3)
有关使用@Configurable
另一种方法是获取应用程序上下文(在Web应用程序中为WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext)
)并使用context.getBean("name")
获取bean,但它更像是一种解决方法。
答案 1 :(得分:1)
这些类不是由Spring创建的,因为它们具有状态。
是什么让你认为Spring不能/不应该创建具有状态的对象?
取决于你想要做什么(很难弄明白这一点!)我会做以下其中一项:
为CVS文件参数和DAO参数提供CSV类getter和setter,并使用Spring DI对其进行实例化。这假设在发生Spring接线时文件名可用。
使用从文件参数实例化CSV对象的方法创建工厂类。工厂类应具有DAO对象的getter / setter,并使用Spring DI进行实例化。