1

jax-rs と spring を使用して Web サービスを作成しています。「Datasource」と呼ばれるデータベース接続プールを表す Singleton クラスがあります。

     Datasource datasource = Datasource.getInstance();
     Connection connection = datasource.getConnection();

このコードが実行されるため、最初の「クエリ」でシングルトンが作成されますが、サーバーの起動時にシングルトン インスタンスを作成したいと考えています。どうすればこれを達成できますか? 私のweb.xmlには、

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

そしてapplication.xmlに私は持っています

 <bean name="myRoutes" class="com.package.myClass" />

ここに豆を追加しますか?

4

3 に答える 3

1

デフォルトでは、ApplicationContext 実装は、初期化プロセスの一部として、すべてのシングルトン Bean を積極的に作成および構成します。シングルトン スコープは、Spring のデフォルト スコープです。

静的ファクトリ メソッドで作成する Bean を定義する場合、属性を使用してclass静的ファクトリ メソッドを含むクラスを指定し、named 属性を使用factory-methodしてファクトリ メソッド自体の名前を指定します。

<bean
    id="dataSource"
    class="com.package.DataSource"
    factory-method="getInstance" />
于 2013-08-05T17:30:50.700 に答える
0

はい、この定義により、サーバーの起動時にシングルトン Spring Bean を作成します。

<bean name="myRoutes" class="com.package.myClass" />
于 2013-08-05T17:18:26.753 に答える
0

を実装ServletContextLitenerし、デプロイメント記述子でリスナーとして定義する必要がある場合があります。ドキュメントによると

ServletContextListenercontextInitialized(ServletContextEvent sce) メソッドのjavadocは 言う

Web アプリケーションの初期化プロセスが開始されているという通知。Web アプリケーションのフィルターまたはサーブレットが初期化される前に、すべての ServletContextListeners にコンテキストの初期化が通知されます。

Mkyong の Web サイトでは、同じ例を使用して使用方法を示しています。

于 2013-08-05T17:18:28.550 に答える