当前位置: 首页 > 知识库问答 >
问题:

为什么Spring忽略了我的@dependson注释?

黄涵畅
2023-03-14

根据我所读到的内容,这是我执行依赖顺序所需要的全部内容。

然后我构建了所有的东西,设置了我的断点,并启动了应用程序。我希望在任何依赖bean之前到达“configData”bean中的断点。事情不是这样的。第一个断点在一个依赖bean的“init”方法中。

然后我更改了“log4j.xml”,将“debug”设置为“org.springframework”的日志级别,并重新运行测试。断点行为是相同的,并且我的日志记录没有显示任何关于Spring初始化的调试信息(我对log4j初始化本身进行了调试,因此我确认为“org.springframework”设置了调试)。

@Component("configData")
public class ConfigData {
    ....
    @PostConstruct
    public void init() {
        ....
    }
}

@Component
@DependsOn("configData")
public class ClassDependentOnConfigData extends BaseClass {
    ....
    @Override
    @PostConstruct
    public void init() {
        super.init();
        ....
    }
}

还请注意,“baseClass”有一个“@autowired”表示“configData”。

共有1个答案

孔阳平
2023-03-14

(取自他人正确但现已删除的答案)

@dependson契约只保证bean已经构造好并且属性已经设置好。这并不能保证已经调用了任何@PostConstruct方法。

使其工作的方法是让“Dependee”类(其他人依赖的类)实现“InitializingBean”类,这需要实现“afterPropertiesSet()”方法。我将我的“init()”方法的原始主体放入这个方法中。我验证了它现在是在依赖于它的任何类之前执行的。

 类似资料:
  • 问题内容: 我将Spring 3.1.3用于Web应用程序,将XML配置与组件扫描结合使用。 我意识到,其中一个扫描组件必须在其他几个组件之前进行初始化。在所有需要构造后初始化的类上,我在方法上具有@PostConstruct批注。 为了设置依赖关系顺序,我在需要先后构造的类上将“ @Component”更改为“ @Component(“ configData”)”。然后,在每个需要在“ conf

  • 问题内容: 这是从CruiseControl执行时得到的: 同时,从命令行启动它可以提供正确的结果。为什么要进入这个?为什么忽略了我?我该如何解决? 我不知道从CC启动when 的值是什么。我真的很想获得这些信息,但我不知道如何。CC本身是从用户开始与该用户给我(这是CentOS的5.4): 问题答案: 假设您有一台linux机器。 看一下,这是一个符号链接。查看此符号链接的目标位置(在我的情况下

  • 我在JMeter中创建了一个脚本,它从CSV获取登录凭据。 用户名:pshah 密码:欢迎 当我执行脚本时,我可以在POST中看到值: 用户名:pshah 但密码:欢迎 我想知道原因”

  • 见下图。我的.gitignore文件应该忽略src/dist中的所有文件,但事实并非如此。

  • 我对iOS布局约束的机制有误解。请参阅下面列出的我放在viewDidLoad中的代码。 在我看来,我的意图是明确的。我想在设备屏幕的中央看到一个按钮。但我只能看到下面的图片。 我在项目控制台中有一个输出,非常可怕,我无法从中理解任何东西。 无法同时满足约束。可能以下列表中至少有一个约束是您不想要的。尝试以下方法:(1)查看每个约束,并尝试找出您不期望的约束;(2) 查找添加了一个或多个不需要的约束

  • 我已经用FilesystemMetadataProvider基于此实现了:https://github.com/vdenotaris/spring-boot-security-saml-sample 为了使 SSL 握手适用于工件绑定,我必须将 IDP 的 CA 证书放在 keyManager 使用的 java 密钥库中。 我宁愿使用jre上的cacerts,以防IDP更改CA,但是我还没有找到任