繁体   English   中英

Spring通过代码或注释自动注入构造函数

[英]Spring auto inject with constructor via code or annotations

给定下课:

  • XRepository声明了一个带有1个参数的构造函数(简单的一个,不是自动装配的),它具有一些自动装配的字段。
  • 使用XRepository作为自动装配的XService。
  • XProcessor使用XService作为自动连线。

因此,我必须在运行时初始化XProcessor以获取将在XRepository构造函数中使用的特定值。 在不同的调用上,我将有不同的参数,因此注入应在运行时进行。 任何想法如何使用代码配置或注释来实现?

请记住,Spring需要注入Spring托管bean的所有构造函数参数。

我相信您有两种选择:

  1. 在控制器中解析您的URL信息,并将其通过参数传递到持久层。 这将是我的首选机制。 您可以创建特殊的DTO来传递各种信息,并保持方法签名的简洁。
  2. 您的情况可以使用request范围bean来解决。 您将这样创建一个bean:

     @Component @Scope("request") public class { private String urlPart; } 

    然后,您可以将该组件自动连接到XProcessorXRepository 对应用程序的每个请求都将创建XRequestContext新实例,您将在XProcessor解析您的信息并将其存储到XRequestContext

    XRepository您将使用XRequestContext实例来检索存储在XProcessor

    您可以在Spring docs中了解有关请求范围的信息。 就像每个请求线程的ThreadLocal一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM