我有一个包含8个成员的Spring组件。
我目前正在通过现场注射自动装配这8名成员。
我现在希望将这些成员设为私有final,并进行构造函数注入以设置它们。
这很容易做到,但现在我有一个包含8个参数的组件构造函数。
我知道我可以使用setter注入并在XML文件中设置这些值,但我不想这样做。
还有其他选择吗?
编辑:
这个组件只做一件事。但这涉及到几个其他服务。因此8次注射
答案 0 :(得分:7)
首先,没有其他选择 其次,如果一个构造函数有8个参数,那么它的设计不合适。我认为你应该重新思考班级结构和责任。考虑将类拆分为两个或三个单独的bean并注入它们。
如果构造函数有8个参数,在大多数情况下它将违反SRP(单一责任原则)
答案 1 :(得分:0)
首先,您可以在.properties文件中设置这些参数的初始值,然后将此属性文件作为pojo配置类读取,并且在Spring中将.properties文件转换为pojo非常容易。
所以构造函数将是这样的
@Autowired public Temp(ConfigPojoClass config){ ..... }