私はこの質問が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型に置く:
解決策をもう1つの質問から試したときに何が起こったのかを教えてください。そうでなければ、回答の仕方がわからず、これは依然として重複しています。 – skaffman
これをコンストラクタから実行できませんか? – flurdy
ああ、他の質問から私が唯一変えたのは、@ @ PostConstruct'アノテーションを追加することでした。どちらの方法でも同じ結果が得られたので、解決策は私のためには機能しませんでしたが、他の質問者にとってはうまくいきました。 – IAmYourFaja