【问题标题】:C-namespace section in spring reference documentspring 参考文档中的 C-namespace 部分
【发布时间】:2014-12-30 02:37:41
【问题描述】:

我正在阅读 Spring 文档,但我无法理解来自 c-namespace section in the reference document 的以下声明

对于构造函数参数名称不可用的极少数情况(通常如果字节码是 编译时没有调试信息),可以使用回退到参数索引

我的问题是:

  1. 在什么情况下构造函数参数不可用。
  2. -byte 代码编译时没有调试信息是什么意思。可以用eclipse检查吗?

我正在通过网络检查这个,但可以得到任何参考。我找到了Constructor injection using c:namespace,但它没有解释任何事情

【问题讨论】:

    标签: java spring


    【解决方案1】:

    只有在使用变量调试信息编译类时,构造函数参数名称才可用。使用javac 时,这是-g:vars 选项。在 Eclipse 中,这是Windows > Preferences > Java > Compiler > Add variable attributes to generated class files

    【讨论】:

      【解决方案2】:

      如果有问题的类是由javac 编译而没有-g 标志(“调试信息” - 参见javac docs),那么编译后的类字节码将不包含构造函数参数的名称。这意味着 Spring 不能使用反射来匹配构造函数参数名称,因此您需要按位置(即按索引)注入它们。

      生成已编译字节码以确保提供调试信息的是构建环境。编译代码后,除了重新编译之外,您无法检索该信息。

      另见What does the javac debugging information option -g:vars do?

      【讨论】:

        猜你喜欢
        • 2022-01-13
        • 1970-01-01
        • 1970-01-01
        • 2014-11-23
        • 2011-11-10
        • 1970-01-01
        • 2012-07-30
        • 1970-01-01
        • 2017-11-18
        相关资源
        最近更新 更多