2012-02-07 10 views
2

私はこの質問がExecute method on startup in springの複製であることを知っています。しかし、私はその質問のための受け入れられた答えに掲載されたアドバイスを試してきました、そして何も私のために働いていませんでした。そのように、私は同じ質問がここに尋ねられているが、根本的な原因が異なっていると強く感じるので、別の答え/解決策が必要だと思う。春の実行方法

私は起動時にBeanを作成してすぐにそのメソッドの1つを実行しようとしています。

私の春の設定(heartbeat-config.xml):

<beans (all the xmlns stuff here ommitted for brevity)> 
    <bean id="heartbeat" class="org.me.heartbeat.Heartbeat"/> 
</beans> 

そしてHeartbeat.java

public class Heartbeat 
{ 
    @PostConstruct 
    public void start() 
    { 
     System.out.println("I should see this message in the logs somewhere!!"); 
    } 
} 

そして最後に、私のweb.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
    version="2.4"> 

    <!-- The display name of this web application --> 
    <display-name>Heartbeat</display-name> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/heartbeat-config.xml</param-value> 
    </context-param> 

    <listener> 
     <listener-class> 
      org.springframework.web.context.ContextLoaderListener 
     </listener-class> 
    </listener> 
</web-app> 

私はTomcatのIドンでこれを実行します」起動エラーが発生しません。 Tomcatは健全なように見えます(ログからわかるように)。しかし、私のstart()メソッドでは、System.out呼び出しによって生成されるログの出力は表示されません(Tomcatはすべての標準出力をログファイルにリダイレクトします)。

ここで何か見落としていますか?私が実行できる明らかな診断はありますか?あなたはコンテキスト・ネームスペースを宣言する必要が

<bean id="heartbeat" class="org.me.heartbeat.Heartbeat" init-method="start"/> 

したい場合は、注釈と、これはあなたのapplicationContext.xmlをint型に置く:

+0

解決策をもう1つの質問から試したときに何が起こったのかを教えてください。そうでなければ、回答の仕方がわからず、これは依然として重複しています。 – skaffman

+0

これをコンストラクタから実行できませんか? – flurdy

+0

ああ、他の質問から私が唯一変えたのは、@ @ PostConstruct'アノテーションを追加することでした。どちらの方法でも同じ結果が得られたので、解決策は私のためには機能しませんでしたが、他の質問者にとってはうまくいきました。 – IAmYourFaja

答えて

3

それを行うための最も簡単な方法は、注釈を忘れてまで、あなたのBean定義を変更することです:

<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-2.5.xsd"> 

    <!-- Enable @PostConstruct, @PreDestroy and friends in Spring --> 
    <context:annotation-config/> 

    <bean id="heartbeat" class="org.me.heartbeat.Heartbeat"/> 
</beans> 

注意:名前空間を確認すると、ネットからコピーされます。

関連する問題