2017-12-13 18 views
0

私はそれが動作しているかわかりませんが、私たちは以前の配置で作成されたファイル.txtをロードするプロジェクトを持っています。問題はApplicationcontextがロードされていなかったということでした、と@Autowiredされたファイルをロードする方法以来、NullPointerExceptionをスローし、これは、私はそれを解決しようとしてなかったものです:これはweb.xmlのがApplicationContextがロードされた後にリスナースプリングウェブを追加してください

import org.springframework.context.ApplicationEvent; 
import org.springframework.context.ApplicationListener; 
import org.springframework.stereotype.Component; 

@Component 
public class TestListener implements ApplicationListener{ 

    @Override 
    public void onApplicationEvent(ApplicationEvent event) { 
    } 
} 

ですプロジェクトとリスナー:

<listener> 
    <listener-class>TestListener</listener-class> 
</listener> 

ポイントはリスナーを作成することです、これは正しいですか?

+1

"Applicationcontextがロードされていませんでした"ということをどういう意味ですか? "NullPointerException"とは何ですか?これは春バージョンですか?あなたはこれを見たことがありますか:https://spring.io/blog/2015/02/11/better-application-events-in-spring-framework-4-2? – daniu

+0

autowiredメソッドが呼び出され、メソッドが起動された時点でコンテキストがnullだった場合、アプリケーションスタックのコンテキストがロードされませんでした。私は春4.0.5を使用しています –

+0

スタックトレースを投稿する必要があります –

答えて

0

つのオプションが頭に浮かぶ:

InitializingBean:

@Component 
public class FileLoader implements InitializingBean { 
    public void afterPropertiesSet() throws Exception { 
     // load file 
    } 
} 

コンテキストがロードされた後にこれが呼び出される必要があります。

@PostConstruct:

@Component 
public UserService { 
    private List<Customer> registeredCustomers; 
    // ... 

    @PostConstruct 
    public void loadPreviouslyRegisteredUsers() { 
     registeredCustomers = loadFile(); 
    } 
} 

は、私はこの方が好き。 @PostConstructメソッドは、サービスBeanが作成された後に呼び出されます。これは、ファイルをロードする最適な方法です。

申し訳ありませんが、実際にはApplicationContextListenerについてのご質問にはお答えできませんが、それはあなたがしようとしているようです。

+0

ポイントはリスナーを作成し、 'ApplicationContext'がロードされた後に起動することを確認しないようにしてください。ご回答有難うございます! –

関連する問題