有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用Spring断言。生产代码中的notnull

我继承了一个使用Spring Autowiring的应用程序,每个autowired构造函数都充满了断言。notNull()在继续之前检查每个参数

我看不出构造函数自动连接会如何让这些参数为空,从而使这些断言看起来多余,并使代码看起来凌乱

我理解这对于手动注入arg的单元测试可能有用,但我认为测试中的NPE足以表明测试没有正确初始化

在我去“整理”代码之前,我想我应该问问自己是否遗漏了什么


共 (1) 个答案

  1. # 1 楼答案

    我认为这只是额外的预防措施——自动连线是容器的一个功能,与代码分离,可以随时禁用。通过这种方式,您可以显式地定义构造函数的契约

    假设有人禁用了该特定类上的自动布线,并将其替换为:

      <bean id="myBean" class="com.my.company.BeanImpl">
        <constructor-arg name="someService">
            <null />
        </constructor-arg>
      </bean>
    

    我认为这是你遗漏的一点:)