春天构造函数注入有很多字段

时间:2017-11-17 14:26:19

标签: java spring

我有一个包含8个成员的Spring组件。

我目前正在通过现场注射自动装配这8名成员。

我现在希望将这些成员设为私有final,并进行构造函数注入以设置它们。

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

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

还有其他选择吗?

编辑:

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

2 个答案:

答案 0 :(得分:7)

首先,没有其他选择 其次,如果一个构造函数有8个参数,那么它的设计不合适。我认为你应该重新思考班级结构和责任。考虑将类拆分为两个或三个单独的bean并注入它们。

如果构造函数有8个参数,在大多数情况下它将违反SRP(单一责任原则)

答案 1 :(得分:0)

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

所以构造函数将是这样的

@Autowired public Temp(ConfigPojoClass config){ ..... }