对多个类的依赖性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对多个类的依赖性相关的知识,希望对你有一定的参考价值。

我是Spring的新手,需要公开Web服务以保存客户数据。我的客户对象是具有多个重复元素的巨大json。我有各自的单独的类,如名称,地址,标识,特征等现在,当我为客户定义POJO时,我需要声明所有依赖项,为此优先使用基于构造函数的DI。

我已经阅读了许多文章,声明Class应该有单一的责任,并且对其他类的多个依赖是设计糟糕的标志现在我的问题是,由于我的对象很大,我怎么能减少这些依赖,因为所有这些都是我的一部分root对象 - 客户。谢谢。

Sample data :
{
   "customer": {
      "partyId": "9000073442",
      "partyRole": [
         {
            "partyRoleId": "CRM000"
         },
         {
            "partyRoleId": "CRM004"
         }
      ],
      "name": [],
      "associationName": [],
      "mobileNumber": "+919387439865",
      "emailId": "ipbl@ril.com",
      "status": "CUSA",
      "IndividualIdentification": [
         {
            "id": "POA",
            "type": "FS9200",
            "number": "23456789",
            "issueDate": "2018-01-04",
            "placeOfIssue": "MUMB",
            "issuingAuthority": "RTO"
         },
         {
            "id": "POI",
            "type": "FS9200",
            "number": "23456789",
            "issueDate": "2018-01-04",
            "placeOfIssue": "MUMB",
            "issuingAuthority": "RTO"
         }
      ],
      "PanIdentification": {
         "number": []
      },
      "characteristics": [
         {
            "attributeName": "DOC_REF_NUM",
            "attributeValue": "EM000000155Q"
         },
         {
            "attributeName": "ROUTING_ZONE",
            "attributeValue": "CO007"
         }
      ],
      "segment": {
         "attributeName": "CUSTOMER_CATEGORY",
         "attributeValue": "0007"
      },
      "associatedPartyId": "9000073441",
      "organization": {
         "name": "IPBillingLocation",
         "type": "0007",
         "designation": [],
         "department": []
      },
      "customerUpdationDateTime": "2018-02-08T12:24:31.776Z",
      "addresses": {
         "validFrom": "2018-01-28T18:30:00Z",
         "addressId": "0001980438",
         "subUnitNr": "23456",
         "buildingName": "sadfgh",
         "streetName": "asdfgh",
         "landmark": "sdfgh",
         "locality": "Ghansoli S.O",
         "postcode": "400701",
         "city": "Mumbai",
         "district": "Thane",
         "state": "MH",
         "country": "IN",
         "jioCenterId": "I001",
         "addressType": "PER_ADD"
      },
      "customerCreationDateTime": "2018-01-29T19:10:05",
      "circleId": "MU",
      "aadharIdentification": {
         "number": []
      }
   },
   "response": {
      "interactionStatus": "0"
   },
   "jioroute": "CO007"
}

我的客户POJO:

public class Customer{

  @Autowired
  private IndividualIdentification Indid;

  @Autowired
  private Characteristics chars;

  @Autowired
  private Addresses  addresses;


  // upto n 
}

这符合最佳做法吗?如果没有,那么减少依赖的替代方案是什么

答案

模型类不应该是Spring管理的依赖项。 您通常在方法中创建它们,或者在请求反序列化后从WS调用中“接收”它们。 从WS调用创建的模型实例是绑定并特定于WS请求的方法。 因此将它们注入bean中是没有意义的。 使用相当的方法参数通过层传输它们。

模型类应该是POJO(如果你对JSON和持久层都使用相同的类,则应该是JPA实体),而不是Spring bean。

另一答案

我认为对于应该做什么课有一些误解。

您只需要在服务,控制器,数据访问对象(DAO,与数据库通信),存储库,配置的Spring上下文中注册和注入依赖项。

“Customer”类应该由您实例化和处理。

以上是关于对多个类的依赖性的主要内容,如果未能解决你的问题,请参考以下文章

java 代码片段

重构的理由

制作具有多个类的库,附加预先存在的 .a 库和其他依赖项

对象对具体类的依赖

是否有在单个活动中处理多个片段的 Android 设计模式?

设计模式遵循的原则