簡體   English   中英

為什么不在普通Java文件中調用InitializingBean的方法

[英]Why InitializingBean's method wont be called in a normal Java File

讓我們說我的java課程

class myClass{
  public static void main ..{
    Validator validator;
    LocalValidatorFactoryBean localValidatorFactory = new LocalValidatorFactoryBean();
    validator = localValidatorFactory.getValidator();
  }

在最后一行,我得到nullPointerException。 那是因為在我的localValidatorFactory中, ValidatorFactory屬性為null,我想這有責任讓我得到驗證器。

現在,我的問題是,如果這是一個動態的webproject並且我有一個上下文文件,其中我已經定義了所有這些類,那么在這種情況下它將起作用。 因為在這種情況下調用afterPropertiesSet方法來設置屬性,我想。

但是為什么在這種情況下不起作用呢? 我能做些什么才能讓它發揮作用?

是這樣的,我應該有contextFile,它有所有這一切,在我的java文件中,我做ApplicationContext.getBean()並在這些步驟之后,它會工作嗎? 這是否意味着initializingBean只有在這樣的事情發生時才會起作用? 在普通的java代碼中,我無法使initializingBean工作?

InitializingBeanFactoryBean (即LocalValidatorFactoryBean )是spring框架的回調接口,但是您的代碼沒有使用它。

LocalValidatorFactoryBean可以定義容器自動裝配(即解析和注入)的依賴關系,但是您自己創建實例,因此Spring無法參與並正確處理這些回調。

您可以在“普通的Java代碼”中正確地完成所有這些工作,但是自己調用工廠bean和afterPropertiesSet的setter。 在這種情況下,當LocalValidatorFactoryBean是Spring托管bean時,你基本上就是在做Spring自動為你做的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM