Java 是否将Spring托管对象提供给非Spring托管对象?
我有一个数据结构,表示包含数千个配置设置的CSV文件。该结构是一个Java类文件,其实例变量表示文件中的记录(即:aJava 是否将Spring托管对象提供给非Spring托管对象?,java,spring,dependency-injection,Java,Spring,Dependency Injection,我有一个数据结构,表示包含数千个配置设置的CSV文件。该结构是一个Java类文件,其实例变量表示文件中的记录(即:aHashMap)和文件状态(错误、警告等) 这些类不是由Spring创建的,因为它们具有状态。我希望该类访问当前由Spring管理的数据库DAO类处理的系统配置属性。通常,当类需要这个DAO时,我使用@Autowired通过Spring注入它。但由于我的数据结构不是由Spring管理的,CSV结构类如何访问DAO 我能想到的唯一方法是,从Spring托管bean创建数据结构时,只需
HashMap
)和文件状态(错误、警告等)
这些类不是由Spring创建的,因为它们具有状态。我希望该类访问当前由Spring管理的数据库DAO类处理的系统配置属性。通常,当类需要这个DAO时,我使用@Autowired
通过Spring注入它。但由于我的数据结构不是由Spring管理的,CSV结构类如何访问DAO
我能想到的唯一方法是,从Spring托管bean创建数据结构时,只需传入DAO:
CSVDataStruture c = new CSVDataStruture(dao);
请参阅关于使用@Configurable
另一种方法是获取应用程序上下文(在web应用程序中,这是webapplicationcontextils.getRequiredWebApplicationContext(servletContext)
),并使用context.getBean(“name”)
获取bean,但这更像是一种变通方法。请参阅关于使用@Configurable
另一种方法是获取应用程序上下文(在web应用程序中,这是webapplicationcontextils.getRequiredWebApplicationContext(servletContext)
),并使用context.getBean(“name”)
获取bean,但这更像是一种变通方法
这些类不是由Spring创建的,因为它们具有状态
是什么让您认为Spring不能/不应该创建具有状态的对象
根据您正在尝试做的事情(很难理解!),我将执行以下操作之一:
- 为CVS文件参数和DAO参数提供CSV类getter和setter,并使用SpringDI实例化它。这假定在发生Spring连接时文件名可用
- 使用从文件参数实例化CSV对象的方法创建factory类。工厂类应该为DAO对象提供一个getter/setter,并使用SpringDI进行实例化
- 为CVS文件参数和DAO参数提供CSV类getter和setter,并使用SpringDI实例化它。这假定在发生Spring连接时文件名可用
- 使用从文件参数实例化CSV对象的方法创建factory类。工厂类应该为DAO对象提供一个getter/setter,并使用SpringDI进行实例化
@Configurable
是一种方法@Configurable
是一种方法-我想我会尝试选项2。我们正在做的是加载一个文件,验证内容,然后加载第二个文件并区分这两个文件。谢谢-我想我会尝试选项2。我们要做的是加载一个文件,验证内容,然后加载第二个文件并区分这两个文件。