Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否将Spring托管对象提供给非Spring托管对象?_Java_Spring_Dependency Injection - Fatal编程技术网

Java 是否将Spring托管对象提供给非Spring托管对象?

Java 是否将Spring托管对象提供给非Spring托管对象?,java,spring,dependency-injection,Java,Spring,Dependency Injection,我有一个数据结构,表示包含数千个配置设置的CSV文件。该结构是一个Java类文件,其实例变量表示文件中的记录(即:aHashMap)和文件状态(错误、警告等) 这些类不是由Spring创建的,因为它们具有状态。我希望该类访问当前由Spring管理的数据库DAO类处理的系统配置属性。通常,当类需要这个DAO时,我使用@Autowired通过Spring注入它。但由于我的数据结构不是由Spring管理的,CSV结构类如何访问DAO 我能想到的唯一方法是,从Spring托管bean创建数据结构时,只需

我有一个数据结构,表示包含数千个配置设置的CSV文件。该结构是一个Java类文件,其实例变量表示文件中的记录(即:a
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进行实例化

这些类不是由Spring创建的,因为它们具有状态

是什么让您认为Spring不能/不应该创建具有状态的对象

根据您正在尝试做的事情(很难理解!),我将执行以下操作之一:

  • 为CVS文件参数和DAO参数提供CSV类getter和setter,并使用SpringDI实例化它。这假定在发生Spring连接时文件名可用

  • 使用从文件参数实例化CSV对象的方法创建factory类。工厂类应该为DAO对象提供一个getter/setter,并使用SpringDI进行实例化


您可以通过spring上下文直接引用托管bean“getBean方法”您可以通过spring上下文直接引用托管bean“getBean方法”
@Configurable
是一种方法
@Configurable
是一种方法-我想我会尝试选项2。我们正在做的是加载一个文件,验证内容,然后加载第二个文件并区分这两个文件。谢谢-我想我会尝试选项2。我们要做的是加载一个文件,验证内容,然后加载第二个文件并区分这两个文件。