Java 具有大量字段的Spring构造函数注入

Java 具有大量字段的Spring构造函数注入,java,spring,Java,Spring,我有一个Spring组件,它有8个成员 我目前正在使用场注入自动连接这8个成员 现在我想将这些成员设为private final,并执行构造函数注入来设置它们 这很容易做到,但现在我有了一个具有8个参数的组件构造函数 我知道我可以使用setter注入并在XML文件中设置这些值,但我不想这样做 还有其他选择吗 编辑: 这个组件只做一件事。但这涉及到呼叫其他几个服务。因此8次注射首先,别无选择。 其次,如果一个控制器有8个参数,那么它的设计是不正确的。我认为你应该重新思考班级结构和责任。考虑将类分成

我有一个Spring组件,它有8个成员

我目前正在使用场注入自动连接这8个成员

现在我想将这些成员设为private final,并执行构造函数注入来设置它们

这很容易做到,但现在我有了一个具有8个参数的组件构造函数

我知道我可以使用setter注入并在XML文件中设置这些值,但我不想这样做

还有其他选择吗

编辑:


这个组件只做一件事。但这涉及到呼叫其他几个服务。因此8次注射

首先,别无选择。
其次,如果一个控制器有8个参数,那么它的设计是不正确的。我认为你应该重新思考班级结构和责任。考虑将类分成两个或三个独立的bean并注入它们。p>
如果一个构造函数有8个参数,在大多数情况下,它将使用SRP(单一责任原则)

首先,您可以在.properties文件中设置这些参数的初始值,然后将此属性文件作为pojo配置类读取,在spring中将.properties文件转换为pojo非常容易

所以构造器是这样的

@自动连线 公共临时(ConfigPojoClass配置){ .....
}

如果你用二传手,那么他们就不可能是最终的。这一点很好——我试过了,但忘记了这不是一个选项;)使用Lombok为您生成构造函数?我不理解这个问题。您想更改为构造函数注入,但没有构造函数?如果问题仅仅在于代码的吸引力,那么您可以使用Lombok@RequiredArgsConstructor annotation@WinterN不,我想使用构造函数——但是有这么多的参数有点笨拙。